1

I have a problem while adding values to a JavaScript object: the value to add is a key,value pair. Here is sample:

//JavaScript object

var cart=new Object();

function add()
{
  var rating="1"
  var category="somecat";
  var user="user1";

   if(cart[user]==null)

        cart[user]={category:rating};

   else

         cart[user][category]=rating;
 }

What I was expecting is that if user exists in cart object then value for his particular should get replaced, and if user doesn't exist then new user and category should be added.

The code is working fine when user already exists. Problem is, when I am adding a new element with cart[user]={category:rating} then its adding the variable name as key i.e. category , not the value inside it ("somecat").

Is there any way to do this using json, jquery or javascript itself?

Is there any way to assign value inside the variable?

0

3 Answers 3

7

There is no way to use a variable to define a property name inside object literal notation. It accepts identifiers or strings, but both identify property names, not variables.

You have to create the object then add the property:

if(!cart[user]) { 
   cart[user] = {};
}
cart[user][category] = rating;
Sign up to request clarification or add additional context in comments.

3 Comments

Thanks ! :) means it treats everything as property name. (literal). that's nice to know . thanks
I have another query . cart[user]={category:rating}; in this case the value of rating is getting added i.e: "1" . how this?
Because that is a value, not a property name.
3

You will need to replace

{category:rating}

with

var obj = {};
obj[category] = rating;

Comments

0

When creating an object literal the key must be a string, so in your code it will be "category". If instead you do:

  var rating="1"
  var category="somecat";
  var user="user1";

   if( !cart[user] ) {     
        cart[user]={};  
   }

   cart[user][category]=rating;

That will initialise a non existing user to an empty object and then add the category.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.