利用数组reduce方法对工作中的后台数据进行处理(超级实用)

在工作中,很多时候后台返回的数据并不是我们想要的那种数据类型,所以我们需要通过方法转成自己想要的数据类型。下面有几种方法,大家可以借鉴一下。希望能对大家有所帮助。

首先我们要对数组reduce方法如何使用要有所了解:

  const arr = [1, 2, 3];  需求:求和
    // acc => 累计值
    // cur => 当前项
    // curIndex => 当前项索引
    // arr => 数组本身
    reduce方法有两个参数,第一个为函数,第二个为第一次的的累计值。
    如无第二个参数:
    const r = arr.reduce((acc, cur, curIndex, arr) => {
        console.log(acc, cur);
        // 1  2    第一次累计值为1,当前项则为2,
        因为数组中的1已经累计了,所以当前项会从数组中的2开始
        // 3  3    第二次累计值为3,当前项则为3
        因为数组中的1、2已经累计了,所以当前项会从数组中的3开始
        return acc + cur;
    });
    console.log(r);    //   6    最后总和为 6
	如有第二个参数:
	const r = arr.reduce((acc, cur, curIndex, arr) => {
        console.log(acc, cur);
        // 3  1    第一次累计值为3,当前项则为1
        因为第二个参数中的3已经累计了,所以当前项会从数组中的1开始
        // 4  2    第二次累计值为4,当前项则为2
        因为第二个参数中的3和数组中的1已经累计了,所以当前项会从数组中的2开始
        // 6  3    第三次累计值为6,当前项则为3
        因为第二个参数中的3和数组中的1,2已经累计了,所以当前项会从数组中的3开始
        return acc + cur;
    },3);
    console.log(r);    //   9    最后总和为 9
  • 第一种:将以下数组所有项放在一个数组当中。
 const arr = [
   '留蕴,犁白萱,之怜翠,张莹莹,杭专,势飞语,碧鲁彗',
  '崔宏,旷候,涵宗玛,丽恭义,郁畅畅,欧阳姣丽,晁天青',
  '果芷容,左丘山雁,乘雨文,佟梦菲,叶建华,源逸馨,鲁才',
   '滕思,於晴雪,厍涵衍,贝勇毅,南宫格,管诗珊,郯姝美'
 ];
  // acc  累计值   // cur  当前项   
  // curIndex  当前项索引   // arr  数组本身
const r = arr.reduce((acc, cur, curIndex, arr) =>  acc.concat(cur.split(',')), []);
console.log(r);
第一次:acc []    cur  '留蕴,犁白萱...',
第二次:acc [留蕴,犁白萱...]    cur  '崔宏,旷候...',
第三次:acc [留蕴,犁白萱...崔宏,旷候...]    cur  '果芷容,左丘山雁...',
第四次:acc [留蕴,犁白萱... 崔宏,旷候...  果芷容,左丘山雁...]    cur  '滕思,於晴雪...',
最终返回:[留蕴,犁白萱... 崔宏,旷候...  果芷容,左丘山雁... 滕思,於晴雪...]
  • 第二种:
        const userList = [
            { id: 1, username: 'ifer', email: 'ifer@gmail.com' },
            { id: 2, username: 'elser', email: 'elser@gmail.com' },
            { id: 3, username: 'for', email: 'for@gmail.com' }
        ];
        转成:
        {
            1: { id: 1, username: 'ifer', email: 'ifer@gmail.com' },
            2: { id: 2, username: 'elser', email: 'elser@gmail.com' },
            3: { id: 3, username: 'for', email: 'for@gmail.com' }
        } 

实现代码:

 const r = userList.reduce((acc, cur, curIndex, arr) => {
    return {
        ...acc,
        [cur.id]: cur
    };
}, {}); 
或者
const r = userList.reduce((acc, cur, curIndex, arr) => {
     acc[cur.id] = cur;
      return acc;
 }, {});
 思路我就不一一写出来了

希望对大家在工作中进行数据处理方面有点帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值