Javascript 重置数组是从array.forEach中断的有效方法吗?
我在寻找一个简单的方法来摆脱forEach。这个答案提到使用some方法,但这并没有给出当前元素的索引:Javascript 重置数组是从array.forEach中断的有效方法吗?,javascript,arrays,Javascript,Arrays,我在寻找一个简单的方法来摆脱forEach。这个答案提到使用some方法,但这并没有给出当前元素的索引: 我发现将数组设置为false将中断forEach“循环”。这是有效的还是非法的?如果您的意思是将其.length设置为迭代中的当前索引,那么是的,它是“有效的”,但请注意,这样做是在清除该点之前的所有数组成员 var arr = ["foo","bar","baz"]; console.log(arr.length); // 3 arr.forEach(function(v, i) {
我发现将数组设置为false将中断forEach“循环”。这是有效的还是非法的?如果您的意思是将其
.length
设置为迭代中的当前索引,那么是的,它是“有效的”,但请注意,这样做是在清除该点之前的所有数组成员
var arr = ["foo","bar","baz"];
console.log(arr.length); // 3
arr.forEach(function(v, i) {
if (i == 1)
arr.length = i;
else
console.log(v);
});
console.log(arr.length); // 1
如果将.length
设置为false
,则实际上是将其设置为0
,因此清除整个数组
使用。一些
或。每一个
对我来说似乎更明智
我应该注意,迭代不一定会停止,但不会调用回调,因为本机
.forEach()
不会为不存在的属性调用回调。根据规范,缓存中的长度为
这可以通过在迭代过程中扩展阵列来测试。添加的成员永远不会到达。根据文档,当前元素的索引作为第二个参数传递给回调函数: 语法:array.some(回调[,thisObject]) 看
更重要的是 是否有任何原因使您不能以正常方式进行操作:
var matchIndex = -1;
for (i = 0; i < someArray.length; i++) {
if (isFound(someArray[i])) {
matchIndex = i;
break;
}
}
alert("Mathing index: " + matchIndex);
var-matchIndex=-1;
对于(i=0;i
很抱歉,在标记框中按enter键。“不提供当前元素的索引”-它为我提供。这是第二个参数。请向我们展示一些“将数组设置为false”的示例代码。我刚刚发现了这个方法。谢谢我最终还是按照正常的方式做了。我只是喜欢.each()在jQuery中的工作方式。
var matchIndex = -1;
for (i = 0; i < someArray.length; i++) {
if (isFound(someArray[i])) {
matchIndex = i;
break;
}
}
alert("Mathing index: " + matchIndex);