从数组中删除双值,而不仅仅是javascript中的重复值

removing double values from array, not just the duplicate in javascript

本文关键字:javascript 不仅仅是 数组 删除      更新时间:2024-02-23

所以我有一个有7个值的数组:

var names = ["Tom", "James", "Matthew", "Jordy", "Jeremy", "Jasper", "Jordy"]

我需要去掉两个"乔迪",不仅仅是一个,而是两个。

我使用的是纯JS和一些jQuery。我知道我可以过滤掉其中一个,但我不知道如何同时做到这两个。

结果必须是:

var names = ["Tom", "James", "Matthew", "Jeremy", "Jasper"]

如果您对在新数组中返回的结果满意,那么.filter()非常简单:

var names = ["Tom", "James", "Matthew", "Jordy", "Jeremy", "Jasper", "Jordy"];
names = names.filter(function(item) {
    return item !== "Jordy";
});

如果要修改当前阵列,可以使用具有向后遍历的.splice()

var names = ["Tom", "James", "Matthew", "Jordy", "Jeremy", "Jasper", "Jordy"];
for (var i = names.length - 1; i >= 0; i--) {
    if (names[i] === "Jordy") {
        names.splice(i, 1);
    }
}

您需要同时使用indexOflastIndexOf。只有当您已经知道要删除的重复项的名称时,其他解决方案才会起作用。

names = names.filter(function(item) {
    return names.indexOf(item) === names.lastIndexOf(item);
});

在这里,我们检查该项在数组中第一次出现的位置是否等于该项在阵列中最后一次出现的地方。如果是,我们知道该项目不是重复的。如果这个谓词失败,我们知道该项在数组中出现不止一次,并且我们不会返回它。

相关文章: