reduce

JS reduce

2020-07-23  本文已影响0人  _皓月__

reduce是一个进行累积操作的方法,当我们提供初始值时,循环从0开始,如果不提供,则循环从索引1开始。如果数组为空且不提供初始值时reduce会报错,如果想reduce执行,你的数组最低标准应该有一项,同时提供默认值(或数组有两项无初始值)。

它由一个回调函数与一个初始值组成,其中回调函数接受四个参数;
array.reduce(function(total, currentValue, currentIndex, arr), initialValue);

功能用法

1、数据累加

reduce.png

2、重复次数计算

let names = ['AAA', 'BBB', 'CCC', 'DDD', 'AAA'];
    let nameNum = names.reduce((pre, cur) => {
    cur in pre ? pre[cur] += 1 : pre[cur] = 1
     return pre
}, {})
 console.log(nameNum); // {AAA: 2, BBB: 1, CCC: 1, DDD: 1}

3、数组去重

let names = ['AAA', 'BBB', 'CCC', 'DDD', 'AAA'];
let nameNum1 = names.reduce((pre, cur, index) => {
  pre.includes(cur) ? '' : pre.push(cur)
  return pre
}, [])
console.log(nameNum1);  // ["AAA", "BBB", "CCC", "DDD"]

4、数组对象去重,转数组

const names2 = [
  { name: 'AAA' },
  { name: 'BBB' },
  { name: 'DDD' },
  { name: 'CCC' },
  { name: 'EEE' },
  { name: 'AAA' },
];

  let nameNum2 = names2.reduce((pre, cur, index) => {
  pre.includes(cur.name) ? '' : pre.push(cur.name)
  return pre
}, [])
console.log(nameNum2);  //  ["AAA", "BBB", "DDD", "CCC", "EEE"]

5、简单类型的Object类型复制克隆

let obj = { a: 1, b: 2, c: 3 };
let obj1 = Object.keys(obj).reduce((total, item) => {
  total[item] = obj[item];
  return total;
}, {});
console.log(obj); // {a: 1, b: 2, c: 3}
console.log(obj1); // {a: 1, b: 2, c: 3}
console.log(obj === obj1); // false
上一篇 下一篇

猜你喜欢

热点阅读