Reduzieren Sie sie !!!
Bei dieser Alternative wird ein Array nicht explizit zusammengeführt und dedupliziert, sondern es wird ein Array genommen und mit einem anderen Array reduziert, so dass jeder Wert des ersten Arrays in einem akkumulativen Verhalten iteriert und destrukturiert werden kann, wobei die bereits enthaltenen Werte ignoriert werden, indem die Persistenz des Arrays aufgrund der Rekursivität ausgenutzt wird.
array2.reduce(reducer, array1.reduce(reducer, []))
Testbeispiel:
var array1 = ["Vijendra","Singh","Singh"];
var array2 = ["Singh", "Shakya", "Shakya"];
const reducer = (accumulator, currentValue) => accumulator.includes(currentValue) ? accumulator : [...accumulator, currentValue];
console.log(
array2.reduce(reducer, array1.reduce(reducer, []))
);
// a reduce on first array is needed to ensure a deduplicated array used as initial value on the second array being reduced
Schlussfolgerung
Weitaus eleganter und nützlicher als langweilig for-each
Ansatz vermieden werden soll (nicht, dass er nicht nützlich wäre).
Beschäftigt sich mit dem concat()
Einschränkungen bei der Deduplizierung.
Sie benötigen weder externe Bibliotheken wie Underscore.js, JQuery oder Lo-Dash noch müssen Sie sich die Mühe machen, eine integrierte Funktion zu erstellen, um den gewünschten kombinierten und deduplizierten Effekt zu erzielen.
Oh, und HEY!, das kann man auch als Einzeiler machen!!!
Diese Antwort war möglich dank der ES5
(ECMAScript 2015), schön include()
und prächtig reduce()
.