2

これに関連するいくつかの回答を見ましたが、問題の主題のこのバージョンに回答するものはありません。

以下を検討してください: (linkto: jsfiddle )

$(function(){

arrKeys = [];
objArr = [];

nameArr = ['name1','name2','name3','name4'];
descArr = ['desc1','desc2','desc3','desc4'];
allValues = {name:  nameArr, desc: descArr};

arrKeys[0] = 'name';
arrKeys[1] = 'desc';

    first = arrKeys.shift(); // returns 'name'

    $(allValues[first]).each(function (key,value) { 

        console.log(first); //returns 'name'
        objArr[key] = {first:value}; //the problem

    });

    console.log(objArr);


});

console.log(objArr) を使用すると、次のようなオブジェクトの配列が生成されます。

[オブジェクト、オブジェクト、オブジェクト、オブジェクト] 0: オブジェクト 先頭: "name1" 1: オブジェクト 先頭: "name2" 2: オブジェクト 先頭: "name3" 3: オブジェクト 先頭: "name4" 長さ: 4

問題は、プロパティ「最初」を最初の変数の値(「名前」)にしたいということです。代わりに、結果は次のようになります。

[オブジェクト、オブジェクト、オブジェクト、オブジェクト] 0: オブジェクト : "name1" 1: オブジェクト : "name2" 2: オブジェクト : "name3" 3: オブジェクト : "name4" 長さ: 4

(リンク先: jsfiddle )

4

2 に答える 2

2
var x = {}
x[first] = value
objArr[key] = x

Javascript オブジェクト リテラル構文は、引用符で囲まれていないキーを、変数名ではなく、引用符で囲まれた文字列であるかのように扱います。実行時に計算された名前でプロパティを設定するには、ブラケット構文を使用する必要があります。

(なぜ、コードを jQuery 呼び出しでラップするのですか? そして、実際にはvar宣言を使用する必要があります。)

于 2013-06-22T18:56:48.997 に答える