使用循环在具有相同键的数组中合并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标记。