以下是我的javascript代码
const rData = [[{"prop11": 10}, {"prop2": 12}]];
const tData = [];
const tddData = [];
for(const item of rData[0]){
tData.push(Object.keys(item).toString());
console.log('trData...', tData);
tData.map(y => {
tddData.push(item[y]);
console.log('tdDta....', tddData);
});
}

以下是console.logs的输出
trData... Array [ "prop11" ]
tdDta.... Array [ 10 ]
trData... Array [ "prop11", "prop2" ]
tdDta.... Array [ 10, undefined ]
tdDta.... Array [ 10, undefined, 12 ]
我似乎无法理解那些未定义的值来自哪里。请帮忙。
答案 0 :(得分:0)
在for
循环的第二次迭代中,item
为{"prop2": 12}
,tData
为["prop11", "prop2"]
。当你致电tData.map()
时,你会这样做:
tddData.push(item["prop11"]);
tddData.push(item["prop2"]);
由于没有item["prop11"]
,因此您获得undefined
。
tData
包含数组中所有先前对象的键,因此只要后一个对象没有那些先前的键,就会得到undefined
。
此外,如果任何对象具有多个属性,Object.keys(item).toString()
将是以逗号分隔的键列表。例如,如果你有
{"key1": 1, "key2": 3}
您将"key1,key2"
推送到tdData
。当您尝试在item[y]
中使用此功能时,您将获得undefined
。