¿Cómo comparar dos objetos para determinar que el primer objeto contiene valores de propiedad equivalentes al segundo objeto en JavaScript?

Dados dos objetos obj1 y obj2 , la tarea es verificar que obj1 contenga todos los valores de propiedad de obj2 en JavaScript.

Input: obj1: { name: "John", age: 23; degree: "CS" }
       obj2: {age: 23, degree: "CS"}
       
Output: true

Input: obj1: { name: "John", degree: "CS" }
       obj2: {name: "Max", age: 23, degree: "CS"}
       
Output: false

Para resolver este problema seguimos los siguientes enfoques.

Enfoque 1: Es un enfoque ingenuo para resolver este problema. En este enfoque, iteramos el obj2 usando el ciclo for..in y en cada iteración, verificamos que la clave actual de ambos objetos no sea igual, devolvemos false ; de ​​lo contrario, después de completar el ciclo, devolvemos true .

Ejemplo:

Javascript

<script>
  
    // Define the first object
    let obj1 = {
        name: "John",
        age: 23,
        degree: "CS"
    }
  
    // Define the second object
    let obj2 = {
        age: 23,
        degree: "CS"
    }
  
    // Define the function check
    function check(obj1, obj2) {
  
        // Iterate the obj2 using for..in
        for (key in obj2) {
              
            // Check if both objects do 
            // not have the equal values
            // of same key
            if (obj1[key] !== obj2[key]) {
                return false;
            }
        }
        return true
    }
  
    // Call the function
    console.log(check(obj1, obj2))
</script>

Producción:

true

Enfoque 2: en este enfoque, creamos una array de todas las claves de obj2 usando el método Object.keys() y luego usando el método Array.every() comprobamos si todas las propiedades de obj2 son iguales a obj1 o no. .

Ejemplo:

Javascript

<script>
  
    // Define the first object
    let obj1 = {
        name: "John",
        age: 23,
        degree: "CS"
    }
  
    // Define the Second object
    let obj2 = {
        age: 23,
        degree: "CS"
    }
  
    // Define the function check
    function check(obj1, obj2) {
        return Object
  
            // Get all the keys in array
            .keys(obj2)
            .every(val => obj1.hasOwnProperty(val) 
                && obj1[val] === obj2[val])
    }
  
    // Call the function
    console.log(check(obj1, obj2))
</script>

Producción:

true

Publicación traducida automáticamente

Artículo escrito por _saurabh_jaiswal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *