Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.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_Json_Ajax_Reactjs - Fatal编程技术网

使用循环在具有相同键的数组中合并javascript数组

使用循环在具有相同键的数组中合并javascript数组,javascript,json,ajax,reactjs,Javascript,Json,Ajax,Reactjs,将数组重新组织为输出的最佳方法是什么?我需要将所有值键(无论是否为数组)合并到共享相同名称键的对象中。我当前的阵列是: brands: [ 0:ZARA: {product: "ZARA Black Shiny Shirt"} 1:ZARA: {fit: "Slim Fit"} 2:ZARA: {size: "46"} 3:H&M: {product: "H&M Black Shirt"} 4:H&M: {fit: "Regular Fit"} 5

将数组重新组织为输出的最佳方法是什么?我需要将所有值键(无论是否为数组)合并到共享相同名称键的对象中。我当前的阵列是:

brands: [
  0:ZARA: {product: "ZARA Black Shiny Shirt"}
  1:ZARA: {fit: "Slim Fit"}
  2:ZARA: {size: "46"}
  3:H&M: {product: "H&M Black Shirt"}
  4:H&M: {fit: "Regular Fit"}
  5:H&M: {size: "44"}
]
我想基于数组集构造一个新数组:

brands: [
  0:ZARA: {product: "ZARA Black Shiny Shirt",fit: "Slim Fit",size: "46"},
  1:H&M: {product: "H&M Black Shirt",fit:50 "Regular Fit",size: "44"}
]

假设一个嵌套对象数组,然后可以迭代该数组,找到具有所需键的对象,并将最内部的对象应用于给定的obejct

var brands=[{ZARA:{product:{ZARA Black Shirt}},{ZARA:{fit:{Slim fit},{ZARA:{size:{46}},{'H&M':{product:{H&M Black Shirt},{'H&M':{fit:{firmal fit},{'H&M':{size:{44},
结果=品牌。减少((r,o)=>{
Object.entries(o.forEach)([k,v])=>{
var-temp=r.find(q=>q中的k);
如果(!temp)r.push(temp={[k]:{});
分配对象(温度[k],v);
});
返回r;
}, []);
控制台日志(结果)

.as控制台包装{max height:100%!important;top:0;}
只需在其上循环并合并即可

var品牌=[
{ZARA:{产品:“ZARA黑色闪亮衬衫”},
{ZARA:{fit:{Slim fit}},
{ZARA:{size:'46}},
{'H&M':{产品:“H&M黑色衬衫”},
{'H&M':{fit:“常规fit”},
{'H&M':{size:'44}
]
/*第一步,在项目上循环,并查看如何组合相同的项目*/
var组合=品牌。减少((obj,条目)=>{
//将其分为部分、项目和细节
常量[key,detail]=对象项(entry)[0]
//如果我们还没有看到此项,请设置它
如果(!obj[key])obj[key]={}
//将新项目详细信息添加到项目中
obj[key]={…obj[key],…detail}
//将更新的对象返回到reduce方法
返回obj
}, {})
//显示我们使用组合细节构建的对象
console.log(组合)
//现在,您希望它是一个对象数组,因此需要循环来实现这一点
var finalOutput=Object.entries(组合)
.reduce((输出[key,obj])=>{
out.push({[key]:obj})
返回
}, [])

console.log(finalOutput)
请添加有效数据和您尝试的内容。删除PHP标记。