为了账号安全,请及时绑定邮箱和手机立即绑定

请各位大佬指点!现在有如下数组,我想把数组改变格式,怎么实现呢?怎么回事哈啊?

请各位大佬指点!现在有如下数组,我想把数组改变格式,怎么实现呢?怎么回事哈啊?

神不在的星期二 2019-10-31 09:45:16
data(){return{arr:[{data:[1,2,3,4],name:"文字"},{data:[1,2,4,5],name:"热巴"},{data:[1,8,3,2],name:"大大"}]}},我想转换为letnewarr=[{data:[1,1,1],//数组中所有的1放在一个数组共了3个name:"文字"},{data:[2,2,2],//数组中所有的2放在一个数组共了3个name:"热巴"},{data:[3,3],//数组中所有的3放在一个数组共了2个name:"大大"},{data:[4,4],//数组中所有的4放在一个数组共了2个name:"--"//没有name值为--},{data:[5],//数组中所有的5放在一个数组共了1个name:"--"},{data:[8],name:"--"},];dome的列子letarray1=[1,2,3,4,5];letarray2=[1,2,3,4,5];letarray3=[1,2,3,4,5];想要的是letarray=[{data:[1,1,1]},{data:[2,2,2]},{data:[3,3,3]},{data:[4,4,4]},{data:[5,5,5]}]这个怎么转成为这个格式呢?我的需求比较特殊
查看完整描述

2 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

constresult=arr
//原数组
//=>[[1,2,3,4],[1,2,4,5],[1,8,3,2]]
//=>[1,2,3,4,1,2,4,5,1,8,3,2]
.flatMap(v=>v.data)
//再=>[,[1,1,1],[2,2,2],[3,3],[4,4],[5],,,[8]]
.reduce((all,v)=>{
consta=all[v]=all[v]||[];
a.push(v);
returnall;
},[])
//=>去掉
.filter(v=>v)
//转成最终结果
.map((v,i)=>({
data:v,
//在原数组中找name,如果没有,"--"
name:(arr[i]||{}).name||"--"
}));
console.log(result);
补充,flatMap如果不存在,这里有个简化的(未处理容错)
Array.prototype.flatMap=function(convert){
convert=convert||(x=>x);
returnthis.map(convert)
.reduce((acc,t)=>[...acc,...t],[]);
};
                            
查看完整回答
反对 回复 2019-10-31
  • 2 回答
  • 0 关注
  • 215 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信