我可以使用数组迭代器执行与for循环相同的功能吗?

时间:2019-03-30 02:26:04

标签: javascript loops addeventlistener arrayiterator

我试图了解是否可以使用数组迭代器(如.forEach())来完成与for循环相同的功能。

我试图了解javascript事件监听器,并编写了一些基本代码来帮助我学习

我有多个div,其类名为“按钮”。

我具有要使用for循环实现的功能,但无法弄清楚如何使用迭代器执行相同的功能。有可能吗?

// Can I use an Array Iterator to do the same operation here
for (var i = 0; i < button.length; i++) {
  addEvent(button[i]);
}

查看JSFiddle of all my code here

我尝试使用.forEach()迭代器,但是由于需要定义在哪个按钮上运行addEvent函数,因此无法弄清如何在forEach()迭代器中获取数组索引。

1 个答案:

答案 0 :(得分:2)

button在代码中您仅发布了指向的链接,它是HTMLCollection,因此“本机”处理不了什么

但是,使用Array.from可以将其“转换”为数组,然后使用Array#forEach方法-因此,您的代码将是

Array.from(button).forEach(function(btn) {
    addEvent(btn);
});

或者甚至更好

Array.from(button).forEach(addEvent);

如果您正在使用Internet Exploder,则需要Array.from的Polyfill

如果您需要使用版本9之前的Internet Exploder,则需要Array.prototype.forEach的Polyfill

我链接到的MDN文档均具有Polyfills