无法从Jquery中的Array中删除Value

时间:2017-09-10 09:57:15

标签: javascript jquery arrays data-manipulation

我有以下数组

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)总是返回-1,但如果传递值像userIdArray.indexOf("6")那么它将删除特定位置 任何人都可以帮助我如何消除特定的价值吗?

4 个答案:

答案 0 :(得分:2)

  

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>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

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

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

deleteMember('3');

console.log(userIdArray);

答案 2 :(得分:1)

我认为您遇到的问题是,您在deleteMember函数中添加的ID不是字符串。

这可能会解决您的问题:

&#13;
&#13;
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)
&#13;
&#13;
&#13;

更美妙的方式是处理您的数据:(ES6方法)

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

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


userIdArray = deleteMemberFromArray(userIdArray, 3)
console.log(userIdArray)
&#13;
&#13;
&#13;

答案 3 :(得分:0)

您可以尝试这种更短更简单的方式来实现您所寻找的目标:

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