首页 > web前端 > js教程 > 如何从 JavaScript 数组中删除重复值?

如何从 JavaScript 数组中删除重复值?

Linda Hamilton
发布: 2024-12-22 12:22:11
原创
1044 人浏览过

How Can I Remove Duplicate Values from a JavaScript Array?

从 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中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板