Estoy tratando de comparar 2 objetos por su propiedad y los valores. Si el valor de la propiedad "nombre" coincide entre sí, quiero enviar la propiedad y el valor a value3.
Una vez que se registra value3, quiero una respuesta como esta:
{ name: 'dog', surname: 'good', skills: 'programming', age: '22' }, { name: 'cat', surname: 'soft', skills: 'engineer' age: '12' }, { name: 'elephant', surname: 'big', skills: 'programming' age: '23' }Aquí está el código:
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) 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)El código anterior solo funcionará si para cada nombre en valores1 existe un objeto con nombre en valores2 . Si no usa este código:
const values3 = values1.map((value1) => { const found = values2.find(value2 => value2.name === value1.name) return Object.assign(value1, { age: found ? found.age : undefined }) })