JavaScript 数组扩展 Array.some() 和 Array.every() 的区别

2026-01-21 17:00:51  阅读 155 次 评论 0 条

首先说他俩的区别:

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

请注意:

  1. some()不会对空数组检测

  2. 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

请注意:

  1. some()不会对空数组检测

  2. 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);



微信扫码查看本文
本文地址:https://www.yangguangdream.com/?id=2268
版权声明:本文为原创文章,版权归 编辑君 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?