Cómo puedo combinar dos objetos utilizando lodash o javascript?

Estoy tratando de usar isMatch función de lodash a coincidir por debajo de los dos objetos, pero siempre me da cierto como veo que la longitud de perm objeto es diferente y no es coincidencia, ya sea día2 falta de param array a continuación es la forma en que me trataron.

var  object  =   { 
  param: ['day1', 'day2', 'day3'],
  param2: ['day2', 'day3', 'day1', 'day0'],
  param3: ['day1'] 
};
var object2 = { 
  param: ['day3', 'day1'],
  param3: ['day1'],
  param2: ['day3', 'day2', 'day0', 'day1'] 
};

var matched = _.isMatch(object, object2);

console.log(matched)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>

La matriz será en forma ordenada si contiene todo el valor y que coincide con todas las de la clave, entonces, todo lo que debería devolver true else falso.

1 Respuestas

  • trincot
    4 de mayo de 2019

    Usted podría utilizar esta simple función de JavaScript:

    function match(a, b) {
        return Object.keys(a).every(key => {
            const set = new Set(a[key]);
            return key in b && b[key].length === a[key].length 
                            && b[key].every(val => set.has(val));
        });
    }
    
    var  object  =   {  param: ['day1', 'day2', 'day3'], param2: ['day2', 'day3', 'day1', 'day0'], param3: ['day1'] };
    var object2 = { param: ['day3', 'day1'], param3: ['day1'], param2: ['day3', 'day2', 'day0', 'day1'] };
    
    console.log(match(object, object2));