reduce
大法
const res = [
{
data: [
{ name: "aaaa", arrs: [1] },
{ name: "bb", arrs: [1] }
]
},
{
data: [
{ name: "aaaa", arrs: [2] },
{ name: "bb", arrs: [2] }
]
}
].reduce((prev, cur) => {
return [
...prev,
...cur.data.map(r => ({
...r,
x: prev.filter(x => x.name == r.name).length
}))
];
}, []);
console.log(res);
用一个对象记录数量,下个伪代码提供一个思路
const keys = {"AAAA": 0}
if(!keys[item.name]){
keys[item.name] = 0;
}else {
keys[item.name] += 1;
}
item.a = keys[item.name]
一行代码实现,外加排序
before.map(v => v.data).flat().reduce((p,n) =>[...p,{...n,x:p.filter(v => v.name === n.name).length}],[]).sort((a,b) => a.name.localeCompare(b.name))
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决