当数组中存在重复项时,Array.filter()不会删除最后一项

时间:2018-08-06 10:05:22

标签: javascript arrays

我有一个数字数组,当与.filter()一起使用时,应删除最后一个项目。问题是只要存在重复项,该方法就不起作用。

var numbers = [1, 4, 2, 3, 4];
numbers.filter((num, index, array) => array.indexOf(num) !== array.length - 1)

有解决此错误的简便方法吗?

2 个答案:

答案 0 :(得分:2)

也许只使用index而不是array.indexOf(num)

或仅更改数组:

 numbers.pop();

或者如果您想获取一个新数组:

 const withoutLast = numbers.slice(0, -1);

答案 1 :(得分:1)

尝试用lastIndexOf代替indexOf

无论哪种方式,最好使用其他方法,因为有很多方法!

1- array.splice(-1)删除同一数组中的最后一个元素

2- array.slice(0, -1)删除最后一个元素并返回一个新数组

3- array.pop()删除同一数组中的最后一个元素