我如何通过一个序列中的所有输入,使用JavaScript?


当前回答

Iterators 提高效率,让您同时消耗列表中的物品,就好像它们是流。 使 iterator 特别的是它通过收藏的方式. 其他插槽需要将整个收藏上传到前面,以便在收藏中进行 iterate,而 iterator 只需要知道收藏中的当前位置。

您可以通过呼叫 iterator 的下一个方法访问当前项目,下一个方法将返回当前项目的值,并将一个 boolean 指示您到达收藏结束时。

您也可以使用 Symbol.iterator 将您的常规序列转换为 iterator 如下:

您也可以将您的常规序列转换为这样的 iterator:

注意事项:

对象不默认可用,在这种情况下使用为..in,因为而不是值,它用钥匙工作。

其他回答

现在一个简单的解决方案是使用 underscore.js 图书馆,它提供了许多有用的工具,如每一个,并将自动将工作分配给原住民的Each 如果可用。

一个CodePen的例子,它是如何工作:

var arr = ["elemA", "elemB", "elemC"];
_.each(arr, function(elem, index, ar)
{
...
});

看也

在 for_each...in(MDN)中,它解释说,对于每个(对象变量)是作为ECMA-357(EAX)标准的一部分,而对于(MDN)来说,它描述了使用(对象变量)为(对象变量)作为和谐(ECMAScript 6)提议的一部分的下一个方法。

如果你不关心空白:

var x;

while(x = y.pop()){ 

    alert(x); //do something 

}

x 将包含 y 的最后值,并将从序列中删除。

表演

细节

在测试中,我们计算序列元素的总数,我对小序列(10个元素)和大序列(1M元素)进行测试,并将它们分为三个组:

A - 测试B - 测试C - 其他/替代方法

Cross 浏览器结果

所有测试浏览器的结果

浏览器*

配有10个元素

此分類上一篇

配备1000元元素

Chrome 的结果:您可以在这里在您的机器上进行测试

此分類上一篇


如果你需要一个圆体的工作进行序列(而不是平行),一个等待在圆体将等待承诺安排之前继续。

const a = [“a”,“b”,“c”]; for (let index = a.length - 1; index >= 0; --index) { const element = a[index]; console.log(element); }

(ES2015+) 用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于用于

Caveat 为主机提供的物品

var 语言 = [“Java”,“JavaScript”,“C#”,“Python”]; var i, len, 文本; for (i = 0, len = languages.length, text = “”; i < len; i++) { 文本 += 语言[i] + “<br>”; } document.getElementById(“例子”)。innerHTML = 文本; <p id="例子"></p>

var text = "; var i = 0; while (i < 10) { text += i + ") something<br>; i++; } document.getElementById("example").innerHTML = text; <p id="example"></p>

功能滑板 - forEach,地图,过滤器,也减少(它们滑板通过功能,但它们是使用的,如果你需要做一些与你的序列,等等。