2017-01-06 5 views
0

文字列内の重複した値を削除することはできますか?文字列内の同じ値を削除する

例えば:aaa, bbb, ccc, ddd, bbb, ccc, eee, fff, ggg

予想される出力は次のようになる:aaa, bbb, ccc, ddd, eee, fff, ggg

私はどのように私はこれに達成すべきは考えています。 String.prototype.match()Array.prototype.filter()機能使用

+0

文字列または配列を乱しますか? –

+0

@SandeepNayak文字列 – Damon

+0

これまでに試したことを示すことはできますか? –

答えて

1

EcmaScript5ソリューション:それはまた'aaa, bbb,, ccc, ddd, bbb, ccc? eee,, fff, ggg,,'

+0

はそれがconsole.logなのかそれとも[]と ""が出力に表示されますか? – Damon

+0

@Damon、注意してください、答えは、期待される出力を返します。空の文字列はありません。 – RomanPerekhrest

+0

完璧です。これは特に最後のjoinコマンドで効果的です! – Damon

0

スプリットなど洗練された入力文字列はカンマで文字列をカバーします

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

をし、次にresuを置くlt配列はSetです。 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;},[]); 
関連する問題