Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript通过相同的对象键重新排列数组_Javascript_Arrays_Loops_Object - Fatal编程技术网

Javascript通过相同的对象键重新排列数组

Javascript通过相同的对象键重新排列数组,javascript,arrays,loops,object,Javascript,Arrays,Loops,Object,我所拥有的: myArray = [ {type: "My Application"}, {type: "My Component"}, {color: ["red"] } ] 我需要的是: withUniqueKeys = [ {type: ["My Application", "My Component"] }, {color: ["red"]} ] 我如何循环遍历myArray以获得类似于WithUniqKey的数组?我玩这个游戏玩得太久了。lodash溶液也可以。您可以使用 让my

我所拥有的:

myArray = [ {type: "My Application"}, {type: "My Component"}, {color: ["red"] } ]
我需要的是:

withUniqueKeys = [ {type: ["My Application", "My Component"] }, {color: ["red"]} ]
我如何循环遍历myArray以获得类似于WithUniqKey的数组?我玩这个游戏玩得太久了。lodash溶液也可以。

您可以使用

让myArray=[{type:My Application},{type:My Component},{color:red}] 设op=myArray.reduceop,inp=>{ let[key,value]=Object.entriesinp[0] op[键]=op[键]| |[] op[key].pushvalue 返回操作 },{} //如果希望只有一个值的属性是对象 设final=Object.entriesop .map[key,value]=>{[key]:value.length==1?value[0]:value} console.logfinal您可以使用和

让myArray=[{type:My Application},{type:My Component},{color:red}] 设op=myArray.reduceop,inp=>{ let[key,value]=Object.entriesinp[0] op[键]=op[键]| |[] op[key].pushvalue 返回操作 },{} //如果希望只有一个值的属性是对象 设final=Object.entriesop .map[key,value]=>{[key]:value.length==1?value[0]:value} console.logfinal试试这个:

将初始数组减少为按键分组条目 将对象项映射到相应对象的数组 让myArray=[{type:My Application},{type:My Component},{color:[red]}] myArray=myArray.ReduceAc,el=>{ 设prop=Object.keysel[0]; 如果!acc[prop]acc[prop]=[el[prop]]; else acc[道具]。普希尔[道具] 返回acc; },{} myArray=Object.keysmyArray.mapd=>{[d]:myArray[d]。长度===1?myArray[d][0]:myArray[d]}; console.logmyArray尝试以下操作:

将初始数组减少为按键分组条目 将对象项映射到相应对象的数组 让myArray=[{type:My Application},{type:My Component},{color:[red]}] myArray=myArray.ReduceAc,el=>{ 设prop=Object.keysel[0]; 如果!acc[prop]acc[prop]=[el[prop]]; else acc[道具]。普希尔[道具] 返回acc; },{} myArray=Object.keysmyArray.mapd=>{[d]:myArray[d]。长度===1?myArray[d][0]:myArray[d]}; console.logmyArray首先,您可以使用按键进行分组。然后,在第二步中,您可以使用生成的来获得所需的结构:

设myArray=[ {类型:我的应用程序,类别:游戏}, {type:My组件,category:other}, {颜色:红色} ]; 设res=myArray.reduceac,curr=> { Object.keyscurr.forEachk=> { acc[k]=acc[k]| |【】concatcurr[k]; }; 返回acc; }, {}; res=Object.entriesres.map[k,v]=>{[k]:v.length>1?v:v[0]}; console.logres; .as控制台{背景颜色:黑色!重要;颜色:石灰;} .作为控制台包装{max height:100%!important;top:0;}首先,您可以使用来按键进行分组。然后,在第二步中,您可以使用生成的来获得所需的结构:

设myArray=[ {类型:我的应用程序,类别:游戏}, {type:My组件,category:other}, {颜色:红色} ]; 设res=myArray.reduceac,curr=> { Object.keyscurr.forEachk=> { acc[k]=acc[k]| |【】concatcurr[k]; }; 返回acc; }, {}; res=Object.entriesres.map[k,v]=>{[k]:v.length>1?v:v[0]}; console.logres; .as控制台{背景颜色:黑色!重要;颜色:石灰;} .as console wrapper{max height:100%!important;top:0;}您可以这样做:

const arr=[{type:My Application},{type:My Component},{color:red}]; const result=Object.entriesarr.reduceac,x=>{ Object.entriex.forEach[k,v]=>{ acc[k]=[…acc[k]| |[],v]; }; 返回acc; },{}.map[k,v]=>{[k]:v.length>1?v:v[0]}; console.logresult 您可以这样做:

const arr=[{type:My Application},{type:My Component},{color:red}]; const result=Object.entriesarr.reduceac,x=>{ Object.entriex.forEach[k,v]=>{ acc[k]=[…acc[k]| |[],v]; }; 返回acc; },{}.map[k,v]=>{[k]:v.length>1?v:v[0]};
console.logresult 其他答案看起来不错,这里有一个简短的替代方案,也使用and:

constmyarray=[{type:My Application},{type:My Component},{color:red}]; const with uniquekeys=Object.entries myArray.reduceresult,项=>{ 常量[key,val]=Object.entrie项[0]; 结果[键]=结果[键]?[…[结果[键]],val]:val; 返回结果; }, {} .map[key,val]=>{[key]:val};
console.logwithuniquekey 其他答案看起来不错,这里有一个简短的替代方案,也使用and:

constmyarray=[{type:My Application},{type:My Component},{color:red}]; const with uniquekeys=Object.entries myArray.reduceresult,项=>{ 常量[key,val]=Object.entrie项[0]; 结果[键]=结果[键]?[…[结果[键]],val]:val; 返回结果; }, {} .map[key,val]=>{[key]:val};
console.logwithuniquekey;是否只有类型和颜色或不同和/或更多属性?是否只有类型和颜色或不同和/或更多属性?如果只有一个值,OP显然不需要数组
e、 g.color.@Jeto也为这种情况更新了,但在我看来,最好有一个一致的strcture。如果只有一个值,例如color,显然,OP不需要数组。@Jeto也为这种情况更新了,但在我看来,最好有一个一致的strcture