Ich habe eine einfache Lösung für das Problem:Ist es in JavaScript möglich, nur .filter() zu verwenden, um Duplikate zu entfernen (die erste Instanz wird beibehalten)?
function removeExtra(arr) {
var args = [...arguments]
.reduce(function(prev,curr){return prev.concat(curr)});
var answer = [];
for (var i = 0; i < args.length; i++) {
if (answer.indexOf(args[i]) == -1)
answer.push(args[i]);
}
return answer;
}
console.log(removeExtra([1, 3, 2], [5, 2, 1, 4], [2, 1]));
//-> Returns [1, 3, 2, 5, 4]
Aber ich versuche, die Logik der JavaScript funktionaler Methoden, in diesem Fall zu üben, .filter()
. Gibt es eine Möglichkeit, dies auf diese Weise zu tun?
function removeExtra(arr) {
return [...arguments]
.reduce((pre,cur) => pre.concat(cur))
//.filter(x => ???);
}
console.log(removeExtra([1, 3, 2], [5, 2, 1, 4], [2, 1]));
//-> Should be [1, 3, 2, 5, 4]
Edit 1:
Wie bereits angedeutet, gerade in Set()
. Dies ist das erste Mal, dass ich darauf gestoßen bin. Seid gleich zurück für die Forschungsarbeit!
Edit 2:
BIG dank @Kaspars und @gcampbell für Set()
Einführung !! Ich habe jetzt meine Lösung:
function removeExtra(someArgs) {
return [... new Set(
[...arguments].reduce(function(prev,curr){
return prev.concat(curr);
})
)]
}
Dies ist nur eine kleine Revision zu gcampbell Antwort, da ich die Set
zurück zu einem Array
konvertieren [... new Set()]
Wie wäre es http://stackoverflow.com/a/14821032/670396 – elclanrs
'neue Set ([... Argumente] .reduce ((pre, Aktuell) => pre.concat (CUR))' ? – gcampbell