js--数组的every()和some()⽅法检测数组是否满⾜条件的
使⽤介绍
前⾔
阅读本⽂之前先来思考⼀个问题,如何如实现判断⼀个数组中是否存在满⾜条件的元素,如何去判断数组中是否全部元素都满⾜判断条件,这⾥可能能想到使⽤for循环遍历数组,if()判断每⼀项是否符合条件,同样也可以使⽤forEach()遍
历,filter()过滤出满⾜条件的元素并判断元素个数...这⾥介绍⼀下js数组的every和some⽅法。
正⽂
1.every()
基本概念:
every() ⽅法⽤于检测⾮空数组中所有元素是否都符合指定条件(通过函数提供),如果数组中检测到有⼀个元素不满⾜,则整个表达式返回 false ,且剩余的元素不会再进⾏检测。如果所有元素都满⾜条件,则返回 true。
分析:
every⽅法针对⾮空数组进⾏检测,检测条件通过回调函数作为⼊参传递,返回值为布尔类型true或者false,若每个元素都通过检测才返回true,且该⽅法不会改变原数组。
⼀旦到不符合检测条件的元素就返回false,否则遍历全部元素。
使⽤语法:
    array.every(function(currentValue,index,array),thisValue)
    接受两个参数,第⼀个参数为传⼊的回调函数,该函数⼜三个参数,currentValue参数必选,为当前检测的元素,index 为当前元素的索引,array为当前检测的数组,第⼆个参数可选。对象作为该执⾏回调时使⽤,传递给函数,⽤作 "this" 的值。
根据⾃⼰的理解先来动⼿实现上⾯的功能:
function myEvery(array,rules){
js数组方法总结//⾮空判断
if(array.length==0){
alert('请传⼊⾮空数组')
}
let res=true
for (let index = 0; index < array.length; index++) {
if(!rules(array[index])){
res=false
break
}
}
return res
}
var arr=[0,1,2,3,4]
var  rules = function(value){
return value > -1 ? true : false
}
console.log(myEvery(arr,rules))//输出true
2.some()
基本概念:
some()⽅法⽤于检测数组中的元素是否满⾜指定条件(函数提供)。如果有⼀个元素满⾜条件,则表达式返回true , 剩余的元素不会再执⾏检测。如果没有满⾜条件的元素,则返回false。
分析:
some()⽅法针对⾮空数组进⾏检测,检测条件通过回调函数作为⼊参传递,返回值为布尔类型true或者false,若存在任意元素通过检测就参会true,且该⽅法不会改变原数组。
⼀旦到符合条件的就返回true,否则遍历全部元素。
使⽤语法:
    array.some(function(currentValue,index,array),thisValue)
    接受两个参数,第⼀个参数为传⼊的回调函数,该函数⼜三个参数,currentValue参数必选,为当前检测的元素,index 为当前元素的索引,array为当前检测的数组,第⼆个参数可选。对象作为该执⾏回调时使⽤,传递给函数,⽤作 "this" 的值。
根据⾃⼰的理解先来动⼿实现上⾯的功能:
function mySome(array,rules){
if(array.length==0){
alert('请传⼊⾮空数组')
}
let res=false
for (let index = 0; index < array.length; index++) {
if(rules(array[index])){
res=true
break
}
}
return res
}
var arr=[0,1,2,3,4]
var  rules = function(value){
return value > 3 ? true : false
}
console.log(mySome(arr,rules))//输出true
常见使⽤
⽤every和some实现上⾯同样的效果
var arr=[0,1,2,3,4]
let res1=arr.every(v=>v>-1)
let res2=arr.some(v=>v>3)
console.log(res1)//输出true
console.log(res2)//输出true
总结
  every()和 some()使⽤到的地⽅⽐较少,不太常见,需要在学习⼯作中多加练习使⽤吧!以上就是本⽂的全部内容,希望给读者带来些许的帮助和进步,⽅便的话点个关注,⼩⽩的成长之路会持续更新⼀些⼯作中常见的问题和技术点。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。