我要动态地生成访问对象的属性。
如果我尝试访问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);
但是,这并不工作,并在CONSOL e我看到foo="[object Object].val.name"
而不是预期的foo="ACME Industries"
。
你可以发布你正在使用的对象的例子吗?我也会小心命名对象和参数相同,它只是看起来容易混淆,可能会导致问题。 – elclanrs
^^同意。这个'mydata [i] + bar [j]'连接任何这些值。 – elclanrs
我已经更新了我的答案,以便在问题结束时使用查询,并演示了它的工作原理。 –