2017-08-09 46 views
1

所以下面越來越不確定的條目是我的javascript代碼爲什麼我在下面的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

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

+0

我只是想知道原因。想要擺脫最後一個tddData數組中未定義的那些,可能已經使用了另一種方法並完成了它,但想知道首先避免它的根本原因。你做到了。謝謝。 – Ravy

相關問題