JS.Array.reduse 方法的一个应用场景

js 中 Array 对象上有很多提高开发效率的方法,reduce 是我之前用的最少的,今天看到一篇文章,讲到了 reduce 的一种应用场景,码者发挥了下想象力,翻译之余增加了点内容。

基本用法

reduce 在我之前的认知中,就是用来做累加或者累乘之类的操作的。比如下面求和的例子:

let arr = [1,2,3,4];
let sum = arr.reduce( (a, b) => a+b );
console.log(sum); // 10

我们可以给 reduce 方法设置一个初值:

let arr = [1];
let sum = arr.reduce( (a, b) => a+b, 100);
console.log(sum); // 101

复杂一点的数据结构:

let arr = [{num: 1}, {num: 2}, {num: 3}];
let sum = arr.reduce( (a, b) => ({
  num: a.num+b.num
}));
console.log(sum); // 6

数组元素分类

有时候我们会需要把一个数组的元素分成几个数组,比如对于[1, 2, 3, 4, 0, -2]这个数组,把正数放在一个数组里,把负数放在一个数组里,如果不用 reduce,我们可以这样:

let arr = [1,2,3,4,0,-2];
let nagetive=[], positive=[];
arr.forEach( item => {
  if(item>0)
    positive.push(item);
  else
    nagetive.push(item);
});

用 reduce 呢?

let arr = [1,2,3,4,0,-2];
let [nagetive, positive] = arr.reduce( (result, value) => {
  if(value>0)
    result[0].push(value);
  else
    result[1].push(value);
  return result;
}, [[],[]]);

原本冗长的代码不仅没变得简洁,还变得难懂了?!

不过码者刚刚看到 reduce 这种用法时,还感觉这种用法好 nb 的样子,直到下笔写下上一行文字时,才发现,原来并没有什么好用的……………………………………不过不过不过,用来装 b 大概还算有点市场。

对不起!

发布了44 篇原创文章 · 获赞 25 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/csdn372301467/article/details/95603158