2017-01-06 1 views
0

Ist es möglich, doppelte Werte in einer Zeichenfolge zu entfernen?Entfernen Sie die gleichen Werte in einer Zeichenfolge

z: aaa, bbb, ccc, ddd, bbb, ccc, eee, fff, ggg

die erwartete Ausgabe wie: aaa, bbb, ccc, ddd, eee, fff, ggg

ich keine Ahnung, wie soll ich auf dieses Ziel zu erreichen.

+0

String oder Array? –

+0

@SandeepNayak string – Damon

+0

Können Sie zeigen, was Sie bisher versucht haben? –

Antwort

1

ECMAScript5 Lösung mit String.prototype.match() und Array.prototype.filter() Funktionen:

var str = 'aaa, bbb, ccc, ddd, bbb, ccc, eee, fff, ggg', 
 
    unique_items = str.match(/\b\w+\b/g).filter(function (el, idx, a) { 
 
     return idx === a.lastIndexOf(el); 
 
    }); 
 

 
// unique_items.sort(); // to get a sorted list of words(alphabetically) 
 
console.log(unique_items); 
 

 
// back to string 
 
console.log(unique_items.join(', '));

Es wird auch so anspruchsvolle Eingabezeichenfolgen als 'aaa, bbb,, ccc, ddd, bbb, ccc? eee,, fff, ggg,,'

+0

ist es, nur weil es die console.log oder wird die [] und "" erscheinen in der Ausgabe? – Damon

+0

@Damon, achten Sie darauf, die Antwort gibt die erwartete Ausgabe, keine leeren Strings – RomanPerekhrest

+0

Perfekt, das funktioniert, vor allem mit dem letzten Join-Befehl! – Damon

0

Split die Zeichenfolge an der Kommata abdecken und dann lege das resu lt Array in einem Set. Das Set-Objekt ist wie ein Array, speichert aber nur 1 von jedem Wert.

var set = new Set(yourString.split(",")); 
var distinctValues = Array.from(set).join(); 
1

über Funktions Reduzieren mit aus stören die bestehende Ordnung

var names = ["No","Speaking","Guy","No","Test","Solutions","No"]; 

var uniq = names.reduce(function(a,b){ 
    if (a.indexOf(b) < 0) a.push(b); 
    return a; 
    },[]); 

console.log(uniq, names) // [ 'No', 'Speaking', 'Guy', 'Test', 'Solutions' ] 

// one liner 
return names.reduce(function(a,b){if(a.indexOf(b)<0)a.push(b);return a;},[]); 
Verwandte Themen