EDIT:
Die erste Lösung ist nur dann die schnellste, wenn es nur wenige Artikel gibt. Bei mehr als 400 Einträgen ist die Set
Lösung die schnellste ist. Und wenn es 100.000 Elemente gibt, ist sie tausendmal schneller als die erste Lösung.
In Anbetracht der Tatsache, dass Leistung nur dann wichtig ist, wenn es viele Artikel gibt, und dass die Set
Lösung bei weitem die lesbarste ist, sollte sie in den meisten Fällen die richtige Lösung sein
Die nachstehenden Perf-Ergebnisse wurden mit einer kleinen Anzahl von Items berechnet
Basierend auf jsperf, der schnellste Weg (edit: wenn es weniger als 400 Artikel gibt) um zwei Arrays in einem neuen zu verschmelzen, ist die folgende:
for (var i = 0; i < array2.length; i++)
if (array1.indexOf(array2[i]) === -1)
array1.push(array2[i]);
Dieser ist 17 % langsamer:
array2.forEach(v => array1.includes(v) ? null : array1.push(v));
Dieser ist 45 % langsamer (edit: wenn es weniger als 100 Artikel gibt. Es ist viel schneller, wenn es eine Menge von Elementen ist) :
var a = [...new Set([...array1 ,...array2])];
Und die akzeptierten Antworten sind 55% langsamer (und viel länger zu schreiben) (edit: und es ist um mehrere Größenordnungen langsamer als jede der anderen Methoden, wenn es 100 000 Artikel gibt)
var a = array1.concat(array2);
for (var i = 0; i < a.length; ++i) {
for (var j = i + 1; j < a.length; ++j) {
if (a[i] === a[j])
a.splice(j--, 1);
}
}
https://jsperf.com/merge-2-arrays-without-duplicate