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)
现代方法使用Set
let string = "spanner, span, spaniel, span";
let unique = [...new Set(string.split(", ")];
console.log(unique);
Run Code Online (Sandbox Code Playgroud)