删除字符串中重复单词的出现次数

CLi*_*own 11 javascript arrays string jquery

以下面的字符串为例:

var string = "spanner, span, spaniel, span";
Run Code Online (Sandbox Code Playgroud)

从这个字符串我想找到重复的单词,删除所有重复项,保持单词出现一次,然后输出修改后的字符串.

在这个例子中将是:

var string = "spanner, span, spaniel";
Run Code Online (Sandbox Code Playgroud)

我已经设置了一个jsFiddle进行测试:http://jsfiddle.net/p2Gqc/

请注意,字符串中单词的顺序不一致,每个字符串的长度也不一致,因此正则表达式不会在这里完成工作我不这么认为.我正在考虑将字符串拆分成数组的方法吗?但我希望它尽可能轻松地在客户端上,超级快速......

PSL*_*PSL 37

这样的事怎么样?

拆分字符串,获取数组,过滤它以删除重复的项目,然后将它们连接起来.

var uniqueList=string.split(',').filter(function(item,i,allItems){
    return i==allItems.indexOf(item);
}).join(',');

$('#output').append(uniqueList);
Run Code Online (Sandbox Code Playgroud)

小提琴

对于非支持的浏览器,您可以通过在js中添加它来解决它.

请参阅筛选

if (!Array.prototype.filter)
{
  Array.prototype.filter = function(fun /*, thisp*/)
  {
    "use strict";

    if (this == null)
      throw new TypeError();

    var t = Object(this);
    var len = t.length >>> 0;
    if (typeof fun != "function")
      throw new TypeError();

    var res = [];
    var thisp = arguments[1];
    for (var i = 0; i < len; i++)
    {
      if (i in t)
      {
        var val = t[i]; // in case fun mutates this
        if (fun.call(thisp, val, i, t))
          res.push(val);
      }
    }

    return res;
  };
}
Run Code Online (Sandbox Code Playgroud)

  • 你可能想修剪你的弦乐.这失败了var string ="spanner,span,spaniel,span"; (3认同)

Bry*_*yke 2

现代方法使用Set

let string = "spanner, span, spaniel, span";

let unique = [...new Set(string.split(", ")];

console.log(unique);
Run Code Online (Sandbox Code Playgroud)