所以我有一个包含7个值的数组:
var names = ["Tom", "James", "Matthew", "Jordy", "Jeremy", "Jasper", "Jordy"]
我需要摆脱“Jordy”,不只是一个,而是两个。
我正在使用普通的JS和一些jQuery。我知道我可以过滤其中一个,但我不知道如何做到这两个。
结果必须是:
var names = ["Tom", "James", "Matthew", "Jeremy", "Jasper"]
答案 0 :(得分:1)
如果您对在新数组中返回的结果感到满意,那么.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);
}
}
答案 1 :(得分:1)
您需要做的是indexOf
和lastIndexOf
。只有在您已经知道要删除的重复项的名称时,其他解决方案才有效。
names = names.filter(function(item) {
return names.indexOf(item) === names.lastIndexOf(item);
});
这里我们检查数组中第一次出现的项的位置是否等于数组中最后一次出现的项的位置。如果是这样,我们知道该项目不重复。如果此谓词失败,我们知道该项在数组中出现多次,我们不会返回它。