簡體   English   中英

與硬編碼陣列一起使用

[英]For-in with a hard-coded array

菜鳥JS問題在這里:

for( var p in ['nodeName', 'nodeType', 'tagName', 'localName'] ) {
    console.log( p + '=' + all[i][p] + '\n' );
}

我希望看到類似的東西

nodeName=DIV

相反,我得到

0=undefined

我是否被迫將數組分配給變量,以便可以對其進行索引? 有沒有辦法在for-in中使用此語法並從數組中檢索字符串?

謝謝!

對數組使用for..in 幾乎總是錯誤的 它遍歷對象屬性,而不是遍歷值-s,因此在您的情況下,它會產生0、1、2和3。如果決定使用自定義方法擴展Array.prototype ,則情況變得更糟 (與擴展Object.prototype不同的是,不是很大的嘗試)。 當使用for..in時,它們的名稱也將被迭代。

做您想要的事情的正確方法是:

var foo = [...];
for(var i = 0; i < foo.length; i++) {
    // use foo[i]
}

或以下內容(在現代瀏覽器中或帶有偽裝功能的情況下):

[...].forEach(function(value) {
    // use value
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM