从数组中仅删除一个重复项

use*_*206 2 javascript

我试图只从数组中删除 2 之一,但我的代码删除了所有这些。我的代码如下:

var arr = [2,7,9,5,2]
arr.filter(item => ((item !== 2)));
Run Code Online (Sandbox Code Playgroud)

和:

var arr = [2,7,9,2,2,5,2]
arr.filter(item => ((item !== 2)));
Run Code Online (Sandbox Code Playgroud)

两者都删除所有 2s。我想过删除重复项,如果只有一个重复项,它就可以工作 - 例如:

Array.from(new Set([2,7,9,5,2]));
function uniq(a) {
 return Array.from(new Set(a)) 
}
Run Code Online (Sandbox Code Playgroud)

但是如果有多个重复项会失败,因为它只是将它们全部删除,包括任何其他重复的数字:

Array.from(new Set([2,7,9,9,2,2,5,2]));
function uniq(a) {
 return Array.from(new Set(a)) 
}
Run Code Online (Sandbox Code Playgroud)

有谁知道如何只删除 2s 之一?感谢这里的任何帮助。

Mih*_*nut 6

您可以将indexOfmethod 与splice.

var arr = [2,7,9,5,2]
var idx = arr.indexOf(2)
if (idx >= 0) {
    arr.splice(idx, 1);
}
console.log(arr);
Run Code Online (Sandbox Code Playgroud)