删除字符串中的相同值

时间:2017-01-06 07:46:42

标签: javascript

是否可以删除字符串中的重复值?

例如:wmic Path win32_process Where "CommandLine Like '%yourname.jar%'" Call Terminate

预期输出如:aaa, bbb, ccc, ddd, bbb, ccc, eee, fff, ggg

我不知道我应该如何实现这一目标。

3 个答案:

答案 0 :(得分:1)

使用String.prototype.match()Array.prototype.filter()函数的

EcmaScript5 解决方案:

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,,'

答案 1 :(得分:1)

使用Reduce功能而不会影响现有顺序

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;},[]);

答案 2 :(得分:0)

在逗号处拆分字符串,然后将结果数组放在Set中。 set对象就像一个数组,但它只存储每个值中的一个。

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