ES5新增的数组方法

共性: 对数组进行循环,循环要做的事情都在回调函数里写

1、 foreach

功能:遍历数组中每个元素,不改变原数组,仅仅只是遍历,常用于注册组件、指令等等。

参数:回调函数(回调函数的参数: 数组的当前元素,下标,数组本身){

解释: 回调函数的代码就是在循环体里要执行的代码

}

返回值:无返回值

var scores = [98,99,65,84,82,71];

   scores.forEach((item,index,arr) => {
       //item = item + 1    // 这样写就不行了(item是形参)
        arr[index] = item + 1;
    });
 console.log(scores);  //99 100 66 85 83 72

拓展:定义一个forEach函数

Array.prototype.myForEach = function(callback) {

        //这里this是  scores

  for ( let i = 0; i < this.length; i++ ) {

                callback(this[i],i,this)

        }

}

调用:

scores.myForEach((item,index,arr) => {

        arr[index] = item +2;

})

console.log(scores)

2、map

功能:映射一个新的数组(遍历数组中每个元素,对每个元素做一定的处理,把处理的结果放在新的数组里)

参数:回调函数(数组的当前元素,下标,数组本身)

返回值:新的数组

var scores = [98,99,65,84,82,71];

let arr = scores.map((item,index,arr) => {
     return item+1;  //这个结果是放在新的数组里了
});
 console.log(scores,arr);

3、filter

功能:  过滤掉数组中不满足条件的值(满足回调函数里的条件元素放入新的数组)

参数:回调函数( 数组的当前元素, 下标, 数组本身)

返回值:新的数组,不改变原数组

var scores =  [98,99,65,84,82,71,50,45];

let arr = scores.filter((item,index,arr) => {
        return item >= 60;  //满足的条件
});
 console.log(arr); // 98 99 65 84 82 71

4、some

功能:  完成的是判断,判断数组中是否有一些元素满足条件(回调函数里写的条件)

参数:  回调函数(回调函数的参数: 数组的当前元素,下标,数组的本身)

返回值: 布尔值true代表有一些满足条件的元素,false代表没有满足条件的元素(每一个都不满足)

var scores =  [98,99,65,84,82,71,50,45];
    // 判断是否有人不及格
  let has = scores.some((item,index,arr) => {
        return  item < 60;
});
 console.log(has);   //true

5、every

功能:   完成的是判断,判断数组中是否每一个元素 都 满足条件(回调函数里写的条件)

参数:  回调函数(回调函数里的参数: 数组的当前元素, 下标, 数组本身)

返回值:   每一个都满足则为true   有一些没有满足则为false

<script>
//   item < 60 每一个都满足则为true
// let scores =  [41,50,45,32,58,44];  (比如购物车中当所有的单个复选框
                                        //都勾选上了,则全选的复选框会选中
                     //this.allchecked = this.shopCars.every(item => item.isChecked)) 
let scores =  [98,99,65,84,82,71,50,45];    //有一些没有满足则为false
    let has = scores.every((item) => {
        return  item < 60;
    });
 console.log(has);   //false
</script>

6、reduce

arr: 表示将要原数组

prev:表示上一次调用回调时的返回值,或者初始值init

cur:表示当前正在处理的数组元素

index:表示正在处理的数组元素的索引,若提供init值,则索引为0,否则索引为1

 init: 表示初始值

功能:让数组的前后两项进行某种计算,然后返回其值,并继续计算,不改变原数组,返回计算的最终结果,从数组的第二项开始遍历。

 var arr = [1, 2, 3, 4];

  arr.reduce((prev, cur, index, arr) => {

        console.log(prev);

        console.log(cur);

        console.log(index);

        return prev + cur;
    });

案例:reduce求和

<script>
     let arrw = [1,2,3]

     let results = arrw.reduce((prev,item)=> {
            return prev+item
     })
     console.log('results',results); // 6
</script>

案例:reduce去重

<script>  
        const arr3 = [1,2,3,4,5,3,2,1,6,4,7,8]

        const resultArr = arr3.reduce((pre,cur)=>{
            if(!pre.includes(cur)){
                return pre.concat(cur)
            } else {
                return pre
            }
        },[])

        console.log(resultArr)
</script>

案例:reduce

  let fruitList = [
    {
      name: "苹果",
      createTime: null,
      updateTime: null,
      id: 1001,
      AidAndsID: "100:105",
    },
    {
      name: "橘子",
      createTime: null,
      updateTime: null,
      id: 1002,
    },
    {
      name: "葡萄",
      createTime: null,
      updateTime: null,
      id: 1003,
      AidAndsID: "102:107",
    },
  ];
  /*
      想要的结果result格式 [
            { Aid: '100', sID:'105' },
            { Aid: '102', sID:'107'  }
        ]
  */

  let result = fruitList.reduce((prev, next) => {
    if (next.AidAndsID) {
      let [Aid, sID] = next.AidAndsID.split(":");
      prev.push({
        Aid,
        sID,
      });
    }
    return prev;
  }, []);
  console.log(result);

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值