1

私はこのコードを実行しています。

var output = {"records": []};
for(i = 0; i < data.length; i++)
  output.records[i] = { propertyName : data[i][propertyName] }

出力は次の形式になると思いました。

{ "cat" : "mjau" }
{ "dog" : "woff" }

代わりに、私はこれに驚きます。

{ "propertyName" : "mjau" }
{ "propertyName" : "woff" }

変数propertyNameを取得するにはどうすればよいですか?

すべて猫である多数のレコードを作成するパーサーを作成しようとしていますが、他の場所から呼び出された場合、レコードには代わりに犬のプロパティが必要です。そのために2つの異なるコードを作成することは避けたいと思います。

私はこの質問を見つけました。これには私の問題に対する答えが含まれていると思いますしかし、無知のため、わかりません。

4

4 に答える 4

3

オブジェクト リテラルのキーは、JavaScript では評価されません。そのため、空のオブジェクト ( {}) を作成してから、キーを動的に割り当てる必要があります。

output.records[i] = {};
output.records[i][propertyName] = data[i][propertyName]
于 2012-12-10T20:28:56.743 に答える
0
var a = {b:'c'}

のようです

var a = {};
a['b'] = 'c';

あなたが欲しいのは

a[b] = c

あれは

output.records[i] = {};
output.records[i][propertyName] = data[i][propertyName];

この MDN 文書には次のものがあります:オブジェクトの操作。

于 2012-12-10T20:28:49.540 に答える
0

{ propertyName : data[i][propertyName] }プロパティ名の部分は定数文字列である必要があります。変数を渡すと、その値は取得されません。

あなたがしなければならないことは

for(i = 0; i < data.length; i++){
  var a = {};
  a[propertyName] = data[i][propertyName];
  output.records.push(a);
}
于 2012-12-10T20:30:32.627 に答える
-1

これを試すことができます:

'"' + propertyName + '"' : ...
于 2012-12-10T20:29:18.777 に答える