1

JavaScript オブジェクトに値を追加するときに問題が発生しました。追加する値がkey,valueペアです。ここにサンプルがあります:

//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;
 }

私が期待していたのはuser、カートオブジェクトに存在する場合、彼の特定の値が置き換えられ、user存在しない場合は新しいユーザーとカテゴリが追加されることです。

user既に存在する場合、コードは正常に機能しています。問題は、新しい要素をcart[user]={category:rating}追加してから、その中の値(「somecat」)ではなく、変数名をキー、つまりカテゴリとして追加することです。

json、jquery、またはjavascript自体を使用してこれを行う方法はありますか?

変数内に値を代入する方法はありますか?

4

3 に答える 3

6

オブジェクト リテラル表記内で変数を使用してプロパティ名を定義する方法はありません。識別子または文字列を受け入れますが、どちらも変数ではなくプロパティ名を識別します。

オブジェクトを作成してから、プロパティを追加する必要があります。

if(!cart[user]) { 
   cart[user] = {};
}
cart[user][category] = rating;
于 2012-09-12T10:44:44.797 に答える
3

交換が必要になります

{category:rating}

var obj = {};
obj[category] = rating;
于 2012-09-12T13:55:08.750 に答える
0

オブジェクト リテラルを作成する場合、キーは文字列でなければならないため、コードでは「カテゴリ」になります。代わりに次のようにします。

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

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

   cart[user][category]=rating;

これにより、存在しないユーザーが空のオブジェクトに初期化され、カテゴリが追加されます。

于 2012-09-12T14:01:49.793 に答える