如何比较2个长度数组的对象条目的属性并合并为一个? [复制]
Posted
技术标签:
【中文标题】如何比较2个长度数组的对象条目的属性并合并为一个? [复制]【英文标题】:How to compare the property of object entries of 2 length arrays and merge into one? [duplicate] 【发布时间】:2022-01-17 22:26:24 【问题描述】:我正在尝试通过属性和值来比较 values1
和 values2
。如果name
属性的值相互匹配,我想将属性和值推到value3。
但我收到此错误:无法读取未定义的属性“年龄”
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)
这是我想要返回的结果。
name: 'cat',
surname: 'soft',
skills: 'engineer'
age: '12'
,
name: 'dog',
surname: 'good',
skills: 'programming',
,
name: 'elephant',
surname: 'big',
skills: 'programming'
age: '23'
【问题讨论】:
名称为dog
的对象怎么样。你想在 values3 中排除它吗?
由于dog
不在values2
中,可以忽略。就像一个条件通过了
【参考方案1】:
你可以这样做:
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)
【讨论】:
嘿,我意识到我在问题中犯了一个错误。你能再检查一下吗? 好的,我检查一下。 你能再检查一下我的答案吗? 太棒了!有效。这是我的一个更大的项目,这段代码只是一个例子。在我的项目中,age
未定义。你知道为什么会这样吗?
不客气,你的数据结构和你在问题中输入的一样吗?以上是关于如何比较2个长度数组的对象条目的属性并合并为一个? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
1.合并两个数组,并保持仍然有序。2.删除合并后数组中的重复元素
如何合并 2 个 javascript 对象,如果属性不存在于另一个对象中,则将其填充到一个对象中?