无法从 Jquery 中的数组中删除值

Unable to remove Value from Array in Jquery

我有以下数组

var userIdArray=["1", "3", "6", "39", "62", "139"];

我想使用值

删除数组值

我试过以下方法

function  deleteMember(id) {
                alert(id+"="+userIdArray.indexOf(id));

                userIdArray.splice(userIdArray.indexOf(id),1);

            }

但它总是删除最后一个值。

还注意到 userIdArray.indexOf(id) 总是 return -1 但如果传递值像 userIdArray.indexOf("6") 那么它将删除特定位置 任何人都可以帮助我如何删除特定值吗?

最简单的方法是使用 filter():

var userIdArray = ["1", "3", "6", "39", "62", "139"];
function deleteMember(id) {
  userIdArray = userIdArray.filter(i => i != id);
}

deleteMember('3');

console.log(userIdArray);

您可以尝试这种更短、更简单的方法来实现您想要的:

function deleteMember(id) {
    alert(id+"="+userIdArray.indexOf(id));
    array.splice(i, 1);
}

jQuery.grep()

您可以在 return ( i > 10 ); 中使用任何条件并计算得到

var arr = [ 1, 9, 3, 8, 6, 1, 5, 9, 4, 7, 3, 8, 6, 9, 1 ];

 
arr = jQuery.grep(arr, function( n, i ) {
  return ( i > 10 );
});
console.log(arr);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

我想你遇到了一个问题,你输入 deleteMember 函数的 id 不是字符串。

这可能会解决您的问题:

var userIdArray=["1", "3", "6", "39", "62", "139"];

function  deleteMember(id) {
    removeId = String(id)
    removeIndex = userIdArray.indexOf(removeId)
    if(removeIndex != -1)
     userIdArray.splice(removeIndex,1);
}

deleteMember(3)
console.log(userIdArray)

一种更漂亮的方式是像这样处理您的数据:(ES6 方法)

var userIdArray=["1", "3", "6", "39", "62", "139"];

deleteMemberFromArray = (array, value) => 
    array.filter((member) => 
      member != String(value)
    );


userIdArray = deleteMemberFromArray(userIdArray, 3)
console.log(userIdArray)