Javascript 按键组合两个对象数组,并将第二个数组的值推送到第一个数组中的新数组中
我需要一个包含两个数组的数据的结果数组。如果名称相同,则将第二个数组的值添加到第一个数组的数组中。最好的方法是什么Javascript 按键组合两个对象数组,并将第二个数组的值推送到第一个数组中的新数组中,javascript,arrays,Javascript,Arrays,我需要一个包含两个数组的数据的结果数组。如果名称相同,则将第二个数组的值添加到第一个数组的数组中。最好的方法是什么 var array1 = [ {name: "name1", type: "type"}, {name: "name2", type: "type"}, {name: "name3", type: "type"} ] var array2 = [ {name: "name1", value: "value1"}, {name: "name2", value:
var array1 = [
{name: "name1", type: "type"},
{name: "name2", type: "type"},
{name: "name3", type: "type"}
]
var array2 = [
{name: "name1", value: "value1"},
{name: "name2", value: "value2"},
{name: "name2", value: "value3"},
{name: "name2", value: "value4"}
]
var result = [
{name: "name1", type: "type", values: [
"value1"
]},
{name: "name2", type: "type", values: [
"value2",
"value3",
"value4"
]},
{name: "name3", type: "type", values:[]}
]
基于ES6阵列的单线解决方案。原型和方法等: 以及不带spread运算符但带ES6的版本: 以下是我的方法(注意它修改了
array1
):
var数组1=[
{name:“name1”,type:“type”},
{name:“name2”,type:“type”},
{name:“name3”,type:“type”}
]
变量array2=[
{name:“name1”,value:“value1”},
{name:“name2”,value:“value2”},
{name:“name2”,value:“value3”},
{name:“name2”,value:“value4”}
]
var result=array1.map(项=>{
item.values=array2
.filter(x=>x.name==item.name)
.map(x=>x.value)
退货项目
})
console.log(result)
您可以使用Array.prototype.map()、Array.prototype.filter()和ES6 spread操作符来完成这项任务
var数组1=[
{name:“name1”,type:“type”},
{name:“name2”,type:“type”},
{name:“name3”,type:“type”}
]
变量array2=[
{name:“name1”,value:“value1”},
{name:“name2”,value:“value2”},
{name:“name2”,value:“value3”},
{name:“name2”,value:“value4”}
]
让result=array1.map(item1=>({
…第1项,
数值:array2
.filter(item2=>item2.name===item1.name)
.map(item2=>item2.value)
}));
控制台日志(结果)代码>这将为您提供除空数组(其中名称为name3
)之外的所有内容,您可以通过循环数组1的每个元素并添加空数组来轻松添加此内容
var数组1=[
{name:“name1”,type:“type”},
{name:“name2”,type:“type”},
{name:“name3”,type:“type”}
];
变量array2=[
{name:“name1”,value:“value1”},
{name:“name2”,value:“value2”},
{name:“name2”,value:“value3”},
{name:“name2”,value:“value4”}
];
for(设i=0;i 控制台日志(array1)代码>欢迎使用堆栈溢出!所有已发布的内容都是程序说明。然而,我们需要你去。我们不能确定你想从我们这里得到什么。请在您的帖子中加入我们可以回答的有效问题。提醒:确保您知道,要求我们为您编写程序和建议是离题的。
const result = array1.map(a1 => ({...a1, values:
array2.reduce((r, a2) => a2.name === a1.name ? [...r, a2.value] : r, [])
}));
const result = array1.map(a1 => Object.assign({}, a1, { values:
array2.reduce((r, a2) => a2.name === a1.name ? r.push(a2.value) && r : r, [])
}));