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

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

Linda Hamilton
Linda Hamilton原创
2024-12-22 12:22:11990浏览

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