如何比较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 【问题描述】:

我正在尝试通过属性和值来比较 values1values2。如果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.删除合并后数组中的重复元素

如何将具有相同属性的对象合并到一个数组中?

如何查询 mongoose 中数组长度最大的条目?

如何合并 2 个 javascript 对象,如果属性不存在于另一个对象中,则将其填充到一个对象中?

如何将两个有序数组合并为一个有序数组,用函数做,一个循环搞定?

与第一个对象进行比较时,如何获取第二个对象数组的所有属性?