2017-09-11 54 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);