我要動態地生成訪問對象的屬性。
如果我嘗試訪問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
我已經更新了我的答案,以便在問題結束時使用查詢,並演示了它的工作原理。 –