有个需求,要把一个数组a,变成另一种数组b的形式,具体看下面的结构:

//数组a
[{
    a:'a1',
    b:'1,2,3',
    c:'c1',
},{
    a:'a2',
    b:'3,4,5',
    c:'c2',
}]
//数组b
[{
    a:'a1',
    b:'1',
    c:'c1',
},{
    a:'a1',
    b:'2',
    c:'c1',
},{
    a:'a1',
    b:'3',
    c:'c1',
},{
    a:'a2',
    b:'3',
    c:'c2',
},{
    a:'a2',
    b:'4',
    c:'c2',
},{
    a:'a2',
    b:'5',
    c:'c2',
}]

需求很简单,就是把数组a里面的b字段给打散,然后每个都变成一个新的数组。

这里可以用es6的reduce来收集结果,不用再定义一个额外的变量来收集结果:

var a=[{a:'a1',b:'1,2,3',c:'c1'},{a:'a2',b:'4,5,6',c:'c2'}];
a.reduce((rs,item)=>{
    return rs.concat(...item.b.split(',').map(b=>({...item,b})));
},[]);

这里注意一个技巧,假如有一个对象:let obj={name:'a'},然后有个变量:let name='b',那么{...obj,name}会变成{name:'b'},也就是会覆盖obj的name属性。

回到顶部
我要评论

所有评论

返回
邮箱:
绑定
取消
×

我要评论

回复:

昵称:(昵称不超过20个字)

图片:

邮箱:
绑定邮箱后,若有回复,会邮件通知。
提交
还可以输入500个字