首先说他俩的区别:
1、Array.some() 用于检测数组中的元素是否有满足指定条件的,若有,返回true如果全都不满足,则返回false
2、Array.every() 则与some相反,检测数组中元素是否全部满足指定条件,如果全部满足,返回true,如果有一个条件不满足,则返回false
一、Array.some()
语法(你可以把它理解成为一个foreach循环,你需要为当前循环到的元素,返回一个true/false):
let arr=[];
arr.some((item,index,array)=>{
//item为当前的对象
//index为当前的索引
//array为当前的数组对象
});
-
some() 会依次执行数组的每个元素
-
如果其中任意一个数组满足条件,就是说function里面返回了false,则剩余元素不再检测,直接返回true,
-
如果这个数组循环了一圈下来没有符合条件的元素,则返回false
请注意:
-
some()不会对空数组检测
-
some()不会改变原数组
案例:
我有一个采购清单,我需要查找一下有没有大于200元的物品,并且要找一下是否有已经购买的东西(防止买重)
const arr=[{
prodName:"键盘",
price:100,
isPurchased:false,
isArrival:false
},{
prodName:"显示器",
price:300,
isPurchased:false,
isArrival:false
},
{
prodName:"鼠标",
price:50,
isPurchased:false,
isArrival:false
}];
//查找是否有大于200元的物品
const res= arr.some((item,index,array)=>{
return item.price>200
});
console.log("是否有大于200的物品:",res);
//查找是否有已经购买的物品
const resIsPurchased= arr.some((item,index,array)=>{
return item.isPurchased==true;
});
console.log("是否有已经购买的物品",resIsPurchased);
二、Array.every()
语法:和some一样,也可以理解成为一个foreach循环,你需要为当前循环到的元素,返回一个true/false
let arr=[];
arr.every((item,index,array)=>{
//item为当前的对象
//index为当前的索引
//array为当前的数组对象
});
-
every() 会使用指定函数检测数组中的所有元素
-
如果元素中有任意一个元素不满足(function中返回false),则会立即返回false,
-
如果所有元素都满足条件,则返回true
请注意:
-
some()不会对空数组检测
-
some()不会改变原数组
案例:
还是那个采购单,我要找一下是否全部购买,并且全部到货了
const arr=[{
prodName:"键盘",
price:100,
isPurchased:true,
isArrival:true
},{
prodName:"显示器",
price:300,
isPurchased:true,
isArrival:true
},
{
prodName:"鼠标",
price:50,
isPurchased:true,
isArrival:false
}];
//查找是否全部购买了
const allPurchasedRes=arr.every((item,index,array)=>{
return item.isPurchased==true;
});
console.log("物品是否全部购买:",allPurchasedRes);
//查找是否全部到货
const allArrivalRes=arr.every((item,index,array)=>{
return item.isArrival==true;
});
console.log("是否全部到货",allArrivalRes);

微信扫码查看本文
发表评论