从 JS 数组中删除重复值
JavaScript 数组中的重复元素是一个常见问题。为了解决这个问题,可以采用各种方法。
Set 和 Spread 语法:
最简洁的解决方案使用 Set 构造函数和 Spread 语法:
uniq = [...new Set(array)];
天真的方法:
为了简单起见,一种简单的方法是根据索引过滤元素:
uniqueArray = a.filter(function(item, pos) { return a.indexOf(item) == pos; });
使用哈希表:
更有效的方法利用哈希表,使用对象属性作为键:
function uniq(a) { var seen = {}; return a.filter(function(item) { return seen.hasOwnProperty(item) ? false : (seen[item] = true); }); }
组合方法:
为了处理不同的数组,混合解决方案结合了基元的哈希表和对象的线性搜索:
function uniq(a) { var prims = {"boolean":{}, "number":{}, "string":{}}, objs = []; return a.filter(function(item) { var type = typeof item; if(type in prims) return prims[type].hasOwnProperty(item) ? false : (prims[type][item] = true); else return objs.indexOf(item) >= 0 ? false : objs.push(item); }); }
排序和过滤:
过滤前排序提供了另一种选择,根据相邻值删除重复项元素:
function uniq(a) { return a.sort().filter(function(item, pos, ary) { return !pos || item != ary[pos - 1]; }); }
自定义比较:
对于唯一比较,可以传递回调,并过滤相同的“键”:
function uniqBy(a, key) { var seen = {}; return a.filter(function(item) { var k = key(item); return seen.hasOwnProperty(k) ? false : (seen[k] = true); }) }
以上是如何从 JavaScript 数组中删除重复值?的详细内容。更多信息请关注PHP中文网其他相关文章!