【问题标题】:Unable to remove Value from Array in Jquery无法从 Jquery 中的数组中删除值
【发布时间】:2017-09-10 09:57:15
【问题描述】:

我有以下数组

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

我想使用 value 删除数组值

我试过以下方法

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

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

            }

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

还注意到 userIdArray.indexOf(id) 总是返回 -1 但如果传递像 userIdArray.indexOf("6") 这样的值,那么它将删除特定位置 谁能帮助我如何删除特定值?

【问题讨论】:

  • 你的功能工作正常。它有什么问题?
  • 如果 id=6 我通过了,那么它将删除最后一个值而不是那个值
  • 您需要将字符串作为值,而不仅仅是数字,因为 indexOf 会查找相同的类型和值(严格)。
  • @NinaScholz.ya kyon 发布了答案。非常感谢
  • 也许你会考虑一下数据并保持相同的类型,包括数组和搜索索引。不建议进行类型转换,因为您会忽略概述。因此,我建议使用相同的类型进行搜索,而无需转换为另一种类型或使用弱比较。

标签: javascript jquery arrays data-manipulation


【解决方案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>

【讨论】:

  • 感谢法哈德的回答
【解决方案2】:

我认为您遇到了一个问题,即您放入 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)

【讨论】:

  • 感谢 Kyon。它工作正常。愚蠢的错误。我尝试使用字符串但不是这个。谢谢
  • 刚刚整理了一些东西,再给编辑过的东西。
  • 如果您对此没有任何其他问题,也可以随意将其标记为您的解决方案。
【解决方案3】:

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

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

deleteMember('3');

console.log(userIdArray);

【讨论】:

    【解决方案4】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-11-25
      • 1970-01-01
      • 2016-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多