js中循环方式 some-forEach-every-reduce 对比

js中循环方式 some-forEach-every-reduce 对比

  • forEach 循环一旦开始,中途无法停止。
    const arr = ["小红", "小蓝", "小紫", "小黄"];
    arr.forEach((item, index) => {
      if (item === "小蓝") {
        console.log(index);
      }
      console.log(item);
    });
  • some 循环在找到对应的项之后,可以通过 return true 固定的语法,终止 some 循环。
    const arr = ["小红", "小蓝", "小紫", "小黄"];
    arr.some((v, i) => {
      if (v === "小蓝") {
        return true;
      }
      console.log(v, i);
    });
  • every 当循环的每一项都满足条件时,返回 true ,否则为 false。
    const arr = [
      { id: 2, name: "你", state: true },
      { id: 2, name: "我", state: 0 },
      { id: 2, name: "他", state: true },
    ];
    const result = arr.every((item) => {
        return item.state===true
    });
    console.log(result);
  • map 循环返回一个新的 array,数组元素由每一次调用函数产生结果组成。
    const arr = [1, 2, 3, 4, 5, 6];
    const arr1 = arr.map((item) => {
      if (item == 4) {
        return false;
      }
      return item * 10;
    });
    console.log(arr1);
  • reduce 循环(购物车案例)
    const arr = [
      { id: 2, name: "你", state: true, price: 30, count: 2 },
      { id: 2, name: "我", state: true, price: 10, count: 4 },
      { id: 2, name: "他", state: false, price: 32, count: 6 },
    ];
    // arr.filter(item=>item.state).reduce((累加的结果,当前循环项)=>{ },初始值)

     const result = arr
      .filter((item) => item.state) //过滤
      .reduce((amt, item) => { //累加计算
        return (amt += item.price * item.count);
      }, 0);
    console.log(result);//100
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值