简述map、foreach、filter、以及reduce方法

首先我们先定义个数组然后再去写不同的方法。

        let arr = [{
            userName: "jack",
            password: "112",
            score: 10
        }, {
            userName: "jack",
            password: "112",
            score: 12
        }, {
            password: "158",
            userName: "rose",
            score: 15
        }];

1.map方法

它是会改变原数组里面元素的值,并且它return回一个新的数组。

        let newArr = arr.map((item, index, currArr) => {
            // 通过item修改值会直接影响到元素组
            item.password = '10086';
            if (index == 1) {
                currArr[index].userName = '读书'
            }
            // 当无return返回值,newArr每项值都为undefined
            return `${item.password},${item.userName}`
        })
        console.log(newArr); // ['10086,jack', '10086,读书', '10086,rose']

2.forEach方法

它是会改变原数组里面元素的值,但是它返回的是undefined。

   let newArr = arr.forEach((item, index, currArr) => {
            // foreach也可以改变元素之中的值,但是他会返回的是undefined
            item.password = '110'
            return item.password
        })
        console.log(newArr); //undefined
        console.log(arr);
        // {userName: 'jack', password: '110', score: 10}
        // {userName: 'jack', password: '110', score: 12}
        // {userName: 'rose', password: '110', score: 15}

3.filter方法

返回值是一个新的数组

 let newArr = arr.filter((item, index, currArr) => {
            if (item.password.indexOf("2") != -1) {
                return item
            }
        })
        console.log(newArr);//[{…}, {…}]

4.reduce方法:对数组中的每个元素执行一个自定义的累计器,将其结果汇总为单个返回值。

 array.reduce((t, v, i, a) => {}, initValue)

 t: 累计器完成计算的返回值

v: 当前元素

i:当前元素的索引

a:当前元素所属的数组对象

initValue:第一个累计的数

        let newArr = arr.reduce((t, v) => {
            return v.score + t
        }, 0)
        console.log(newArr);//37

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值