2017-01-06 2 views
0

Можно ли удалить повторяющиеся значения в строке?Удалить одинаковые значения в строке

например: aaa, bbb, ccc, ddd, bbb, ccc, eee, fff, ggg

ожидаемый выход будет, как: aaa, bbb, ccc, ddd, eee, fff, ggg

Я понятия не имею, как я должен достичь на этом.

+0

строка или массив? –

+0

@SandeepNayak string – Damon

+0

Можете ли вы показать, что вы пробовали до сих пор? –

ответ

1

ECMAScript5 решение с использованием String.prototype.match() и Array.prototype.filter() функция:

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(', '));

Он также будет охватывать такие сложных входных строки как 'aaa, bbb,, ccc, ddd, bbb, ccc? eee,, fff, ggg,,'

+0

это просто потому, что это console.log или будет [] и "" появляются на выходе? – Damon

+0

@Damon, обратите внимание, ответ дает ожидаемый результат, нет пустых строк – RomanPerekhrest

+0

Отлично, это работает, особенно с последней командой соединения! – Damon

0

Сплита строки в запятых и затем положите resu lt массив в Set. Заданный объект подобен массиву, но он хранит только 1 из каждого значения.

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

Использование Снижение функции с вне нарушить существующий порядок

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;},[]); 
Смежные вопросы