JavaScript跳出forEach循环

JavaScript提供了forEach用于遍历数组。但使用forEach做迭代时有一个问题,它不允许在遍历完所有元素之前终止循环跳出,即不能使用break语句。即使是在函数里使用return false也不行。

示例

var arr = ["a", "b, "c, "d"];
arr.forEach(function(value, index, _arr) {
   console.log(index + ": " + value);
   return false;
}); 

所有的结果都会输出。

替代方法:可以使用Array的some和every方法

Array的some()方法

Array的some方法遍历数组时,当return值为true时,它会终止遍历。

示例

var arr = ["a", "b, "c, "d"];
arr.forEach(function(value, index, _arr) {
   console.log(index + ": " + value);
   return value === "c";
}); 

输出为a,b,c前面三个值:

 0: a
 1: b
 2: c

Array的every()方法

与some()方法不同,every()方法遍历数组是,当return值为false,它会终止遍历,这是与some()方法相反的。

示例

var arr = ["a", "b, "c, "d"];
arr.forEach(function(value, index, _arr) {
   console.log(index + ": " + value);
   return index < 3;
}); 

输出:

0: a
1: b
2: c

版权声明:著作权归作者所有。

相关推荐

纯JavaScript检测页面是否加载完成(理解JavaScript页面加载事件)

JavaScript与页面加载相关的事件先介绍JavaScript与页面加载相关的几个事件:document.readystatechangereadystatechage事件会监控document.readyState。readyState有三个值:loading:文档正在加载interactive:文档已加载完成且已被解析,但子资源(如image,css,iframe等)仍在加载。comple

在React JSX内部执行循环

这里实现一个表格组件来演示如何在React的JSX内部执行循环。案例假设有一个表格组件,和一个行组件<ObjectRow />,现在需要在表格组件里循环生成行组件<ObjectRow />。是不能直接在jsx里使用for循环,这里介绍两种方法:map函数和立即执行函数。方法一:使用map函数render: function ()&nb

Kotlin:循环语句for与while

For语句使用for语句做迭代需要满足:提供一个迭代器Iterator。使用成员函数提供迭代器如Array:operator fun iterator(): Iterator<T> 注意:iterator()函数需要使用operator标记。使用扩展函数提供迭代器除了添加成员函数iterator提供迭代器外,也可以通过extension function来添加iterator

JavaScript Array map()函数的用法及误用

Array的map()函数作用是一个数组映射为另一个数组,映射方式是以原数组的元素作为输入,使用提供的回调函数对输入元素处理,处理后返回的结果作为新数组的元素。基本语法var new_array = arr.map(function callback(currentValue, index, array) {  &nb

Nginx gzip对javascript文件压缩无效

问题Nginx从1.0.15升级到1.12.1后,原来开启的gzip对javascript文件压缩失效了。原来nginx的gzip相关配置如下gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_comp_level 2; gzip_types text/plain applicati