为什么我在以下javascript代码中获得未定义的条目

时间:2017-08-09 11:35:58

标签: javascript arrays ecmascript-6

以下是我的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 ]

我似乎无法理解那些未定义的值来自哪里。请帮忙。

1 个答案:

答案 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