2016-09-05 4 views
0

Ich benutze lodash mit einigen Berechnungen, aber es gibt eine Funktion, die nicht funktioniert hat ich erwartet, ich verwende zum Beispiel "Unterschied".Vergleichen von 2 Arrays mit _.difference

Seine Nutzung ist:

_.difference([2, 1], [2, 3]); 
output: [1] 

Aber wenn ich auf meine Arrays anwenden:

_.difference([5111471, 5111513], [5111471,5111505,5111513]); 
output:[] 

Statt mir zu geben [5111505], ist mir ein leeres Array zu geben.

+0

Für, dass Sie das zweite Argument als erstes '_.difference zur Verfügung stellen müssen ([5111471,5111505, 5111513], [5111471, 5111513]); ' –

+0

Sind die Daten immer sortiert? – MiltoxBeyond

Antwort

1

_.difference gibt Elemente des ersten Arrays zurück, das im zweiten Array nicht vorhanden ist. In Ihrem Beispiel gibt es keine solchen Elemente, daher das leere Ergebnis. Wenn Sie eine symmetric difference wollen (dh Elemente, die in der ersten Anordnung vorhanden sind oder die zweite, aber in beide nicht), können Sie so etwas wie

diff = _.union(_.difference(a, b), _.difference(b, a)) 
0

_.difference tun kehrt nicht wirklich den Unterschied zwischen zwei Arrays, sondern gibt das erste Array minus dem zweiten zurück. So zurückzukehren [5111505] Sie tun müssen:

_.difference([5111471,5111505,5111513],[5111471, 5111513]); 

Siehe Dokumentation für weitere Informationen: https://lodash.com/docs/4.15.0#difference