jQuery - 从字符串数组中删除重复项[重复]
Posted
技术标签:
【中文标题】jQuery - 从字符串数组中删除重复项[重复]【英文标题】:jQuery - remove duplicates from an array of strings [duplicate] 【发布时间】:2012-09-15 02:55:46 【问题描述】:可能重复:Easiest way to find duplicate values in a javascript arrayjQuery.unique on an array of strings
我正在尝试通过广度优先搜索获取邻居列表(具体而言:Block'd 中相同颜色邻居球的索引)
我的function getWholeList(ballid)
返回一个类似
thelist=["ball_1","ball_13","ball_23","ball_1"]
当然还有重复。
我尝试使用 jQuery.unique(); 删除它们但我猜它不适用于字符串, 那么有什么办法(使数组独一无二)吗?
感谢您的帮助..
【问题讨论】:
看看这个:***.com/questions/840781/… @kleinohad:将其标记为重复 感谢大家的解答,我在this topic找到了需要的函数 对我来说 $.unique 它有效:jsfiddle.net/8RNYF 【参考方案1】:jQuery unique
method 仅适用于 DOM 元素数组。
您可以使用each
和inArray
方法轻松创建自己的uniqe 函数:
function unique(list)
var result = [];
$.each(list, function(i, e)
if ($.inArray(e, result) == -1) result.push(e);
);
return result;
演示:http://jsfiddle.net/Guffa/Askwb/
【讨论】:
使用grep
也不错:function unique(list) return $.grep(list, function(n, i) return list.indexOf(n) == i; );
【参考方案2】:
作为非 jquery 解决方案,您可以像这样使用数组filter
方法:
var thelist=["ball_1","ball_13","ball_23","ball_1"],
thelistunique = thelist.filter(
function(a)if (!this[a]) this[a] = 1; return a;,
);
//=> thelistunique = ["ball_1", "ball_13", "ball_23"]
作为Array.prototype
的扩展(使用缩短的filter
回调)
Array.prototype.uniq = function()
return this.filter(
function(a)return !this[a] ? this[a] = true : false;,
);
thelistUnique = thelist.uniq(); //=> ["ball_1", "ball_13", "ball_23"]
[Edit 2017] ES6 对此的看法可能是:
const unique = arr => [...new Set(arr)];
const someArr = ["ball_1","ball_13","ball_23","ball_1", "ball_13", "ball_1" ];
console.log( unique(someArr) );
【讨论】:
【参考方案3】:试试这个 - Array.unique()
Array.prototype.unique =
function()
var a = [];
var l = this.length;
for(var i=0; i<l; i++)
for(var j=i+1; j<l; j++)
// If this[i] is found later in the array
if (this[i] === this[j])
j = ++i;
a.push(this[i]);
return a;
;
thelist=["ball_1","ball_13","ball_23","ball_1"]
thelist=thelist.unique()
【讨论】:
不要在大型数组上尝试这个,这有二次复杂度 这不是也对数组进行排序吗?有时这是不需要的【参考方案4】:jQuery.unique() 仅适用于 DOM 元素数组。看看这个(unique的增强版):
Enhanced unique
【讨论】:
【参考方案5】:这里有一个 php array_unique
函数的 JavaScript 端口:http://phpjs.org/functions/array_unique
function array_unique (inputArr)
var key = '',
tmp_arr2 = ,
val = '';
var __array_search = function (needle, haystack)
var fkey = '';
for (fkey in haystack)
if (haystack.hasOwnProperty(fkey))
if ((haystack[fkey] + '') === (needle + ''))
return fkey;
return false;
;
for (key in inputArr)
if (inputArr.hasOwnProperty(key))
val = inputArr[key];
if (false === __array_search(val, tmp_arr2))
tmp_arr2[key] = val;
return tmp_arr2;
或者以后的JS:
arr.filter((v, p) => arr.indexOf(v) == p)
【讨论】:
以上是关于jQuery - 从字符串数组中删除重复项[重复]的主要内容,如果未能解决你的问题,请参考以下文章