ES6之reduce用法

重点总结:
reduce() 是数组的归并方法,与forEach()、map()、filter()等迭代方法一样都会对数组每一项进行遍历,但是reduce() 可同时将前面数组项遍历产生的结果与当前遍历项进行运算,这一点是其他迭代方法无法企及的
arr.reduce(function(prev,cur,index,arr){
arr表示原数组
prev表示上一次调用回调时的返回值,初始值init
cur表示当前正在处理的数组元素
index表示当前正在处理的数组元素的索引
},init)

1.求数组项之和

var arr = [1,2,3,4,5,6];
var sum = arr.reduce(function (prev, cur){
  return prev + cur;
},0)

2.求数组项最大值

var max = arr.reduce(function( prev,cur){
  return Math.max(prev,cur)
})

3.数组去重

var newArr = arr.reduce(function(prev, cur){
   prev.indexOf(cur) === -1 && prev.push(cur)
   return prev
},[])

4.求字符串中字母出现的次数

const str = 'sfhjasfjgfasjuwqrqadqeiqsajsdaiwqdaklldflas-cmxzmnha'; 
const res = str.split('').reduce((accumulator, cur) => {
  accumulator[cur] ? accumulator[cur]++ : accumulator[cur] = 1; 
  return accumulator;
}, {});

5.扁平一个二维数组

var arr = [[1, 2, 8], [3, 4, 9], [5, 6, 10]];
var res = arr.reduce((x, y) => x.concat(y), []);

6.对象数组去重

let person = [
  {id: 0, name: "小明"},
  {id: 1, name: "小张"},
  {id: 2, name: "小李"},
  {id: 3, name: "小孙"},
  {id: 1, name: "小周"},
  {id: 2, name: "小陈"},   
];
let obj = {}; 
let peon = person.reduce((cur,next) => {
 obj[next.id] ? "" : obj[next.id] = true && cur.push(next);
 return cur;
},[]) 
console.log(peon);

7.删除两个数组中id相同的对象

let arr = res.data;
let arr1 = res.data1;
arr = arr.filter( item => {
  let tableData = arr1.map( v=>v.id)
  return !tableData.includes(item.id)
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值