Wie kann ich mit zwei Objekt mit lodash oder javascript?

Ich bin versucht, isMatch Funktion von lodash zu entsprechen unten zwei Objekt, aber es immer geben, mich wahr, wie sehe ich die Länge der perm-Objekt ist anders und nicht passende entweder Tag2 fehlt param array ist unten die Weise, die ich versuchte.

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>

Das array wird in einer geordneten Art und Weise, wenn es enthält alle den Wert, und es entspricht alles der Schlüssel, dann sollte true zurückgeben, sonst false.

1 Antworten

  • trincot
    4. Mai 2019

    Man konnte mit diesem einfachen JavaScript-Funktion:

    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));