es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo comparar la igualdad de las entradas de objetos de 2 arrays y cómo crear una fusión de ambos objetos con propiedades personalizadas del objeto encontrado que es igual.

Estoy tratando de comparar 2 objetos por sus propiedades y valores, estrictamente utilizando un bucle “for”. Si el valor de la propiedad “name” u otra propiedad coincide entre ellos, quiero añadir la propiedad y el valor a la variable value3.

Una vez registrado value3, quiero que el resultado sea así:

{
    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'
    },
    {
        lastname: 'dog',
        food: 'treats',
        age: '22'
    }
]

// añadir a este array de objetos vacío
var values3 = [{}]

console.log(values3)
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para comparar los objetos, podemos usar un bucle for anidado. El bucle externo iterará a través del primer objeto (values1) y el bucle interno iterará a través del segundo objeto (values2). Compararemos la propiedad “name” de value1 con la propiedad “name” (o “lastname”) de value2. Si coinciden, agregaremos las propiedades y valores al objeto value3.

    Aquí está el código:

    var values1 = [
        {
        name: 'perro',
        surname: 'bueno',
        skills: 'programación'
        },
        {
        name: 'gato',
        surname: 'suave',
        skills: 'ingeniero'
        },
        {
        name: 'elefante',
        surname: 'grande',
        skills: 'programación'
        }
    ]
    
    var values2 = [
        {
        name: 'gato',
        food: 'pescado',
        age: '12'
        },
        {
        name: 'elefante',
        food: 'hojas',
        age: '13'
        },
        {
        lastname: 'perro',
        food: 'premios',
        age: '22'
        }
    ]
    
    var values3 = []; 
    
    for (var i = 0; i < values1.length; i++) {
        for (var j = 0; j < values2.length; j++) {
            if (values1[i].name === values2[j].name || values1[i].name === values2[j].lastname) {
                var obj = {};
                for (var prop1 in values1[i]){
                    obj[prop1] = values1[i][prop1];
                }
                for (var prop2 in values2[j]){
                    obj[prop2] = values2[j][prop2];
                }
                values3.push(obj);
            }
        }
    }
    
    console.log(values3);
    

    En la consola, la salida se verá así:

    [
        {
            name: 'perro',
            surname: 'bueno',
            skills: 'programación',
            lastname: 'perro',
            food: 'premios',
            age: '22'
        },
        {
            name: 'gato',
            surname: 'suave',
            skills: 'ingeniero',
            food: 'pescado',
            age: '12'
        },
        {
            name: 'elefante',
            surname: 'grande',
            skills: 'programación',
            food: 'hojas',
            age: '13'
        }
    ]
    

Comments are closed.