Итак, ниже мой код 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 ]
Я не могу понять, откуда берутся эти неопределенные значения. Пожалуйста помоги.
На второй итерации цикла 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
.