我正在运行此代码。
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 ?
我试图创建一个解析器来创建所有 cat 的记录但是,当从其他地方调用时,记录应该有 dog 属性。我希望避免为此创建两个不同的代码片段。
我找到this question,我怀疑包含我的问题的答案。然而,由于无知,我无法得到它。
答案 0 :(得分:2)
不会在JavaScript中评估对象文字中的键。因此,您需要创建一个空对象({}
),然后动态分配密钥:
output.records[i] = {};
output.records[i][propertyName] = data[i][propertyName]
答案 1 :(得分:0)
var a = {b:'c'}
就像
var a = {};
a['b'] = 'c';
你想要的是
a[b] = c
即
output.records[i] = {};
output.records[i][propertyName] = data[i][propertyName];
您在此MDN文档中有Working with objects。
答案 2 :(得分:0)
在{ propertyName : data[i][propertyName] }
中,属性名称部分应为常量字符串。它传递一个它不会获取其值的变量。
你要做的是
for(i = 0; i < data.length; i++){
var a = {};
a[propertyName] = data[i][propertyName];
output.records.push(a);
}
答案 3 :(得分:-1)
你可以试试这个:
'"' + propertyName + '"' : ...