可能重复:
动态对象属性名称
我想动态生成对对象属性的访问。
如果我尝试访问mydata[i].val.name
,我会得到somename
.
如果我尝试mydata[i] + bar[j]
(其中 bar[j] === '.val.name'),它会失败。
我如何动态地创建这样的东西?这样我就可以使用用户生成的值访问对象的任何属性?
一些代码:
如果我有一个对象,我希望能够遍历它的属性,收集我感兴趣的属性。理想情况下,我想要以下内容:
var processData = function (data, keys, values) {
var returnData = [], i, j, k;
var parsedData = JSON.parse(data);
var keys = keys || null;
var values = values || null;
var datalen = parsedData.length;
for (i = 0; i < datalen; i++) {
returnData[i] = {};
for(j = 0; j< keys.length; j++){
for(k = 0; k < values.length; k++){
returnData[i][keys[j]] = parsedData[i] + values;
}
}
}
return returnData;
};
然后像这样使用它:
var keys = ["foo","bar"];
var values = [".val.name", ".val.date"];
processData(data, keys, values);
但这不起作用,在控制台中我看到foo="[object Object].val.name"
而不是预期的foo="ACME Industries"
.