在工作中,很多时候后台返回的数据并不是我们想要的那种数据类型,所以我们需要通过方法转成自己想要的数据类型。下面有几种方法,大家可以借鉴一下。希望能对大家有所帮助。
首先我们要对数组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;
}, {});
思路我就不一一写出来了
希望对大家在工作中进行数据处理方面有点帮助。