2017-09-11 93 views
0

我很難理解爲什麼array.entries存在如果數組本身是迭代?在javascript中array.entries()的用途是什麼?

如果我可以使用帶有簡單數組的可迭代使用者(例如[1,2,3]),那麼爲什麼需要將數組轉換爲數組迭代器?

我想不出任何這個函數在現實世界中有用的例子。請有人提供一個例子,可以使用array.entries(),爲什麼?

回答

1

的方法Array.prototype.entries()允許您使用一個Iterator對象,就像你已經指出正確。

主要方面是,您可以使用例如方法.next()。您可以在MDN JavaScript documentation中閱讀關於迭代器和迭代器的更多信息。如果您想在不使用循環的情況下通過陣列循環,此功能特別有用。

它也打開你作出無限迭代這樣的可能性:

var ids = { 
    *[Symbol.iterator]: function() { 
    var index = 0; 

    return { 
     next: function() { 
     return { value: 'id-' + index++, done: false }; 
     } 
    }; 
    } 
}; 

var counter = 0; 

for (var value of ids) { 
    console.log(value); 

    if (counter++ > 1000) { // let's make sure we get out! 
    break; 
    } 
} 

Source

0

例如:

var iter = [].entries.call("stackoverflow") 
iter.next(); // { value: [0, "s"], done: false } 
iter.next(); // { value: [1, "t"], done: false } 
... 

Works的任何陣列狀物體,例如字符串和節點列表。這可能不是最重要的功能,但它沒有傷害。

+0

在這種情況下,我寧願Array.from( 「ABC」)項()作爲更可讀... –

0

我喜歡

for(const [i,v] of [1,2,3].entries()) alert(i,v);