如何使用Javascript从数组中删除数组?

时间:2014-05-06 23:21:10

标签: javascript

我有一个数组

var arr = [{"id":"1","name":"One"},{"id":"2","name":"Two"}]

我推送到数组

arr.push(X)

但是如何删除例如 {" id":" 1"," name":" One"} 来自此阵列的名称

2 个答案:

答案 0 :(得分:5)

在普通的javascript中,您必须搜索数组,在每个对象中查找名称匹配,然后删除该对象:

function removeFromArrayByName(arr, name) {
    for (var i = 0; i < arr.length; i++) {
        if (arr[i].name === name) {
             arr.splice(i, 1);
             return;
        }
    } 
}

或者,如果可能有多个匹配,并且您想删除所有匹配项,则可以执行此操作(执行向后遍历并在找到匹配项时不返回):

function removeFromArrayByName(arr, name) {
    for (var i = arr.length - 1; i >= 0; i--) {
        if (arr[i].name === name) {
             arr.splice(i, 1);
        }
    } 
}

或者,您甚至可以在传递属性名称以进行搜索时使其更通用:

function removeFromArrayByName(arr, prop, val) {
    for (var i = arr.length - 1; i >= 0; i--) {
        if (arr[i][prop] === val) {
             arr.splice(i, 1);
        }
    } 
}

答案 1 :(得分:0)

问题是普通的js,但是如果你使用jquery,你可以写一个这样的函数:

function removeByName(arr, key){
   return $.grep(arr, function (n,i) {
      return n.name != key;
   });
}

在您的情况下,我会致电removeByName(arr,'One');