比较 2 个对象的值并将值推送到一个对象数组

Posted

技术标签:

【中文标题】比较 2 个对象的值并将值推送到一个对象数组【英文标题】:Comparing 2 objects' values and push the values to one object array 【发布时间】:2022-01-14 16:20:36 【问题描述】:

我试图通过它们的属性和值来比较 2 个对象。如果“name”属性的值相互匹配,我想将属性和值推送到value3。

一旦 value3 被记录,我想要这样的响应:


name: 'dog',
surname: 'good',
skills: 'programming',
age: '22'
,

name: 'cat',
surname: 'soft',
skills: 'engineer'
age: '12'
,

name: 'elephant',
surname: 'big',
skills: 'programming'
age: '23'

代码如下:

var values1 = [
    
    name: 'dog',
    surname: 'good',
    skills: 'programming'
    ,
    
    name: 'cat',
    surname: 'soft',
    skills: 'engineer'
    ,
    
    name: 'elephant',
    surname: 'big',
    skills: 'programming'
    
]

var values2 = [
    
    name: 'cat',
    food: 'fish',
    age: '12'
    ,
    
    name: 'elephant',
    food: 'leafs',
    age: '13'
    ,
    
    name: 'dog',
    food: 'treats',
    age: '22'
    
]

// push into this empty object array
var values3 = []

console.log(values3)

【问题讨论】:

到目前为止,您为实现目标做了哪些工作?您的解决方案是否存在特定问题? 是的,它与另一个项目有关,但是一旦我了解了如何解决这个问题,我就可以将它实施到我的项目中 【参考方案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', food: 'fish', age: '12' ,
   name: 'elephant', food: 'leafs', age: '13' ,
   name: 'dog', food: 'treats', age: '22' 
]

const values3 = values1.map((value1) => 
  return Object.assign(value1,  age: values2.filter(value2 => value2.name === value1.name)[0].age )
)

console.log(values3)

上面的代码只有在 values1 中的每个 name 都有一个具有 name 的对象存在于 values2 时才有效.如果不使用此代码:

const values3 = values1.map((value1) => 
  const found = values2.find(value2 => value2.name === value1.name)
  return Object.assign(value1,  age: found ? found.age : undefined )
)

【讨论】:

嘿,我想知道我是否想比较另一个属性,我可以这样做吗 (value2 => value2.name === value1.name || value2.name === value1.surname)[ 0].年龄) 是的,这也行。

以上是关于比较 2 个对象的值并将值推送到一个对象数组的主要内容,如果未能解决你的问题,请参考以下文章

比较两个数组并将不同的值推送到新数组[重复]

将Observable中的值推送到Observable

循环遍历两个对象数组以将匹配值推送到新数组在 React 中不起作用,但在 JS Fiddle 中起作用

将值推送到猫鼬模式中对象内的数组

将复选框值推送到状态 onChange 的数组

如何从 JS 中的 2 个对象数组中找到唯一元素