javascript - 删除字符串中出现的重复单词

标签 javascript jquery arrays string

以下面的字符串为例:

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

我想从这个字符串中找到重复的单词,删除所有重复的单词,保留一个单词出现的位置,然后输出修改后的字符串。

在这个例子中是:

var string = "spanner, span, spaniel";

我已经设置了一个用于测试的 jsFiddle:http://jsfiddle.net/p2Gqc/

请注意,字符串中单词的顺序不一致,每个字符串的长度也不一致,所以我认为正则表达式不会在这里完成工作。我在想将字符串拆分成数组的方法吗?但我希望它对客户端尽可能轻便,而且速度超快......

最佳答案

这样的事情怎么样?

拆分字符串,获取数组,过滤它以删除重复项,然后将它们连接回去。

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

$('#output').append(uniqueList);

Fiddle

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

参见 Filter

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;
  };
}

关于javascript - 删除字符串中出现的重复单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16843991/

相关文章:

c - 给定 char *p = "string",为什么修改会导致未定义的行为?

javascript - $(this).parent().find() 不工作

javascript - 检测到两个元素之一之外的点击?

javascript - ES6 静态函数中访问类作用域

javascript - 在 NodeJS 中使用 mongo+mongoose 交换值的函数

javascript - jQuery `submit` 方法忽略使用 GET 发送的 POST。为什么?

javascript - Javascript/jQuery 中的范围?

arrays - NodeJs Readline 值放入数组中

javascript - 将 HTML5 视频标签分配给 webGL 纹理时的 CORS/跨域安全异常

javascript - 如何从 localStorage 中检索多个键和值