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

本文探讨了JavaScript中Array.prototype.reduce方法的一种应用场景,即如何利用reduce进行数组元素分类。通常reduce用于累加或累乘,但文中通过示例展示了如何使用reduce将数组元素按特定条件(如正负数)分成多个子数组。虽然常规方法可能更直观,但了解这种使用方式可以丰富开发者对reduce的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 大概还算有点市场。

对不起!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值