以下面的字符串为例:
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/