Schnellere Implementierung (besser für kurze oder mittlere Größe Arrays):
var a = ["AAA", "BBB", "CCC", "AAA", "BBB", "CCC", "AAA", "BBB", "CCC", "DDD"];
// Faster implementation:
// (Better for short or medium size arrays)
var b = a.filter((function(){
var idx = {};
var cont = true; // Continue
return function (item){
if (! cont) return false;
if (idx[item]) return cont = false;
return idx[item] = true;
};
})());
console.log(b);
// [ 'AAA', 'BBB', 'CCC' ]
Implementierung mit minimalem Speicher Abfälle (aber sehr uneffizient):
// Minimal memory waste implementation:
var b = a.filter((function(){
var cont = true; // Continue
return function (item, i){
if (! cont) return false;
if (a.slice(0, i).filter(x=>x==item).length) return cont = false;
return true;
};
})());
console.log(b);
// [ 'AAA', 'BBB', 'CCC' ]
Natürlich gibt ist unendliche Zwischenlösungen (abhängig von Ihren Bedürfnissen). Aber, wenn Sie HUGE Arrays nicht analysieren müssen, ist die beste Lösung, den ersten Ansatz zu verwenden: Index wird von Garbage Collector freigegeben, sobald der Filterprozess abgeschlossen ist und in der Tat, wenn Sie Glück haben und Wiederholung passieren
var arr = ["AAA", "BBB", "CCC", "AAA", "BBB", "CCC", "AAA", "BBB", "CCC", "DDD"];
arr.splice(3)
Sie versuchen, einzigartige Elemente aus einem Array zu filtern? –
'arr.slice (0, indexOfSpecificElement + 1)' 'oder' array.length = indexOfSpecificElement + 1; '. –
@DhananjayaKuppu Was ich will, ist nur das erste Muster eines Arrays zu bekommen. wie "AAA", "BBB", "CCC" – Dreams