猿问

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

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]}]
这个怎么转成为这个格式呢?我的需求比较特殊
神不在的星期二
浏览 216回答 2
2回答

一只名叫tom的猫

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],[]);};
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答