如何比较2个长度数组的对象条目的属性并合并为一个?
How to compare the property of object entries of 2 length arrays and merge into one?
我正在尝试通过 属性 和值来比较 values1
和 values2
。如果 name
属性 的值相互匹配,我想将 属性 和值推到 value3.
但我收到此错误:无法读取未定义的 属性 'age'
const values1 = [
{ name: 'dog', surname: 'good', skills: 'programming' },
{ name: 'cat', surname: 'soft', skills: 'engineer' },
{ name: 'elephant', surname: 'big', skills: 'programming' }
]
const values2 = [
{ name: 'cat', age: '12' },
{ name: 'elephant', age: '13' },
]
const values3 = values1.map((value1) => {
return Object.assign(value1, { age: values2.filter(value2 => value2.name === value1.name)[0].age })
})
console.log(values3)
这是我想要的结果return。
{
name: 'cat',
surname: 'soft',
skills: 'engineer'
age: '12'
},
{
name: 'dog',
surname: 'good',
skills: 'programming',
},
{
name: 'elephant',
surname: 'big',
skills: 'programming'
age: '23'
}
你可以这样做:
const values1 = [{
name: 'dog',
surname: 'good',
skills: 'programming'
},
{
name: 'cat',
surname: 'soft',
skills: 'engineer'
},
{
name: 'elephant',
surname: 'big',
skills: 'programming'
}
]
const values2 = [{
name: 'cat',
age: '12'
},
{
name: 'elephant',
age: '13'
},
]
const values3 = values1.map((value1) => {
const sameObj = values2.find(value2 => value2.name === value1.name);
if (sameObj) {
return { ...value1, age: sameObj.age }
}
return value1;
});
console.log(values3)
我正在尝试通过 属性 和值来比较 values1
和 values2
。如果 name
属性 的值相互匹配,我想将 属性 和值推到 value3.
但我收到此错误:无法读取未定义的 属性 'age'
const values1 = [
{ name: 'dog', surname: 'good', skills: 'programming' },
{ name: 'cat', surname: 'soft', skills: 'engineer' },
{ name: 'elephant', surname: 'big', skills: 'programming' }
]
const values2 = [
{ name: 'cat', age: '12' },
{ name: 'elephant', age: '13' },
]
const values3 = values1.map((value1) => {
return Object.assign(value1, { age: values2.filter(value2 => value2.name === value1.name)[0].age })
})
console.log(values3)
这是我想要的结果return。
{
name: 'cat',
surname: 'soft',
skills: 'engineer'
age: '12'
},
{
name: 'dog',
surname: 'good',
skills: 'programming',
},
{
name: 'elephant',
surname: 'big',
skills: 'programming'
age: '23'
}
你可以这样做:
const values1 = [{
name: 'dog',
surname: 'good',
skills: 'programming'
},
{
name: 'cat',
surname: 'soft',
skills: 'engineer'
},
{
name: 'elephant',
surname: 'big',
skills: 'programming'
}
]
const values2 = [{
name: 'cat',
age: '12'
},
{
name: 'elephant',
age: '13'
},
]
const values3 = values1.map((value1) => {
const sameObj = values2.find(value2 => value2.name === value1.name);
if (sameObj) {
return { ...value1, age: sameObj.age }
}
return value1;
});
console.log(values3)