JS中every()和some()的用法
Kaiqisanです,一つの学生プログラマーである。今天开启这个专栏,也是我在以后需要重点保养的第一个专栏,javascript是每个前端工程师必须要熟练于心的一个编程语言,虽然我学习了js有一年多了,但在看面试题和别人的代码的时候,总是会发现我不认识的js代码块,所以这个专刊主要从我学习过程中觉得重要和冷门有用的一些方法或思维或易错的坑出发,从这边文章开始,就开启新的旅程吧!!。
在敲代码的时候,您是否还在使用for循环来实现对数组元素的甄别呢? 大人,时代变了! 现在ES6出了新的方法,可以更快地进行甄别,它针对全体数据,通过条件,排除出’异端’。
- some()是对数组中每一项运行给定函数,如果该函数对任一项返回true,则返回true。
- every()是对数组中每一项运行给定函数,如果该函数对每一项返回true,则返回true。
下面,请看源码!
var arr = [ 1, 2, 3, 4, 5, 6 ];
console.log( arr.some(
function( item, index, array ){
console.log( 'item=' + item + ',index='+index+',array='+array );
return item > 3;
}
));
console.log( arr.every( function( item, index, array ){
console.log( 'item=' + item + ',index='+index+',array='+array );
return item > 3;
})); // 第一个数字就不符合了,所以就报false并返回了
结果为
some和every方法内都有一个function,它能实现自动的迭代,第一个参数为当前迭代的成员,第二个参数为当前迭代的成员数组下标,第三个为数组全体数据。
some一直在找符合条件的值,一旦找到,则不会继续迭代下去。并返回true(如果找不到符合的值则一直不返回值) ,如果找不到的话,则返回false.
every从迭代开始,一旦有一个不符合条件,则不会继续迭代下去。并返回false,(如果找不到符合的值则一直不返回值) 如果找不到的话,则返回true.
总结
其实呢,也不是说不使用这个方法就是不好,这个方法也有这个方法的局限,它只能返回一个true或false,方法本身能实现的功能太过局限,只能判断不符合条件的元素,面对这种情况,我们还有其他自动迭代方法比如map方法和for…in方法,但咱们还是抓紧这个方法,如果遇到极其适合使用这个方法的场合就请务必使用这个方法,你会发现这个方法极其方便。