ES6数组新增的几个方法(foreach,filter,some,every。includes,reduce)

关于数组中foreach() 、map()、filter()、reduce() 、 some()、every()的总结。

1.foreach()

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

arr.foreach((item,index,arr)=>{

    console.log(item);  //结果为1,2,3,4

});

//foreach遍历数组,无返回值,不改变原数组,仅仅只是遍历,常用于注册组件、指令等等。

2.map()

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

arr.map((item,index,arr)=>{

    return item*10;  //结果为10,20,30,40

});

//map遍历数组,返回一个新数组,不改变原数组

3.filter()

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

arr.filter((item,index,arr)=>{

   return item >2; //结果为[3,4]

});

//filter过滤掉数组中不满足条件的值,返回一个新数组,不改变原数组

4.reduce()

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

arr.reduce((result,item,index,arr)=>{

  console.log(result);

  console.log(item);

  console.log(inddx);

  return result+item; 

});

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

5.some()

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

arr.some((item,index,arr)=>{

   return item > 2; //返回true

});

//遍历数组每一项,有一项返回true,则停止遍历,结果返回true。不改变原数组。

6.every()

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

arr.every((item,index,arr)=>{

   return item >1; //返回false

});

//遍历数组每一项,每一项返回true,最终结果为true.有一项返回false,停止遍历,结果返回为false。不改变原数组。

以上6个方法均为ES6语法,IE9及以上才支持。不过可以通过babel转意支持IE低版本。
以上均不改变原数组。
some、every返回true、false。
map、filter返回一个新数组。
reduce让数组的前后两项进行某种计算,返回最终操作的结果。
forEach 无返回值。
在这里插入图片描述
在ES2016里面新增:

arr.indexOf() // 查找指定元素是否存在,如果存在,返回下标,如果不存在返回-1
let arr = [“yang”, “wang”,“wang”, “ling”];
console.log(arr.indexOf(“yang”)) // 0

arr.includes() // 查找指定元素是否存在,如果存在,返回true,如果不存在返回false

str.includes() // 查找指定元素是否存在,如果存在,返回true,如果不存在返回false

例子(字符串类似):
let arr = [“yang”, “wang”,“wang”, “ling”];
console.log(arr.includes(“yang”)) // true

reduce()
在这里插入图片描述
计算数组元素相加后的总和:

var numbers = [3, 4, 2, 1];
 
function getSum(total, num) {
    return total + num;
}
//输出10

语法

array.reduce(function(total, currentValue, currentIndex, arr), initialValue)

将二维数组转化为一维

let arr = [[0, 1], [2, 3], [4, 5]]
let newArr = arr.reduce((pre,cur)=>{
    return pre.concat(cur)
},[])
console.log(newArr); // [0, 1, 2, 3, 4, 5]

对象里属性求和

var result = [
    {
        subject: 'math',
        score: 10
    },
    {
        subject: 'chinese',
        score: 20
    },
    {
        subject: 'english',
        score: 30
    }
];

var sum = result.reduce(function(prev, cur) {
    return cur.score + prev;
}, 0);
console.log(sum) //60
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C+ 安口木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值