2016-10-06 4 views
2

Angenommen, ich habe zwei Objekte mit ähnlicher Struktur. Wie kann ich alle Schlüssel vom ersten Objekt finden, die nicht im zweiten enthalten sind und umgekehrt?Finden Sie den Unterschied zwischen Objekten Tasten

Zum Beispiel habe ich zwei Objekte:

const foo = { 
    foo: 'foo', 
    bar: { 
    baz: 'baz', 
    qux: 'qux' 
    } 
}; 

const bar = { 
    foo: 'foo', 
    bar: { 
    baz: 'baz', 
    quux: 'quux' 
    }, 
    corge: 'corge' 
}; 

die Requisiten, die unterschiedlich sind, sind: foo.bar.qux, bar.bar.quux, bar.corge. Was ist der beste Weg, sie zu finden?

Antwort

2

Eine Möglichkeit besteht darin, eine rekursive Funktion zu erstellen, die tief durch die Eigenschaften des ersten Objekts iteriert, den Pfad der aktuellen Eigenschaft merkt und untersucht, ob eine Eigenschaft mit einem solchen Pfad im zweiten Objekt vorhanden ist.

Es gibt bereits eine tool für diesen Fall geschrieben. Einfach installieren:

npm install keys-diff 

Und es verwenden möchte:

import keysDiff from 'keys-diff' 
const foo = { 
    foo: 'foo', 
    bar: { 
    baz: 'baz', 
    qux: 'qux' 
    } 
}; 

const bar = { 
    foo: 'foo', 
    bar: { 
    baz: 'baz', 
    quux: 'quux' 
    }, 
    corge: 'corge' 
}; 

keysDiff(foo, bar); 

Das Ergebnis sollte sein:

[ 
    [ 
    [ 'bar', 'qux' ] 
    ], 
    [ 
    [ 'bar', 'quux' ], 
    [ 'corge' ] 
    ] 
] 
Verwandte Themen