如何在数组中查找数组并将其删除?

时间:2013-03-15 11:24:43

标签: javascript jquery arrays find matching

var arr = [["test","1"],["demo","2"]];

// $.inArray() ???
// .splice() ???
// $.each() ???

$("code").html(JSON.stringify(arr));

如果我会通过“test”(唯一)关键字找到匹配的数组,我会删除["test","1"]

删除后的arr将为[["demo","2"]]

我该怎么做?

游乐场: http://jsbin.com/ojoxuy/1/edit

5 个答案:

答案 0 :(得分:2)

这是filter的用途:

newArr = arr.filter(function(item) { return item[0] != "test" })

如果要修改现有数组而不是创建新数组,只需将其分配回来:

arr = arr.filter(function(item) { return item[0] != "test" })

splice这样的修改方法使代码更难以阅读和调试。

答案 1 :(得分:1)

你可以这样做:

function remove(oldArray, itemName) {
    var new_array = [];

    for(var i = 0, len = oldArray.length; i < len; i++) {
        var arr = oldArray[i];

        if (arr[0] != itemName) new_array.push(arr);
    }

    return new_array;
}

并称之为:

var arr = [["test","1"],["demo","2"]];
var new_arr = remove(arr,'test');

我在这里做了假设,没有做任何真正的错误检查,但你明白了。

答案 2 :(得分:1)

也许是这样的:

for(var i = 0; i < arr.length; i++) {
  if(arr[i][0] == "test") {
   arr.splice(i, 1);
   break;
  }
}

答案 3 :(得分:0)

检查一下

function rmEl(a,v)
{
for(var i=0;i<a.length;i++)
    {

      if(a[i][0]==v)
      {
        a.splice(i,i+1);
        i=-1;
      }
      $("code").html(JSON.stringify(a));       
    }
 return a;
} 

答案 4 :(得分:0)

var arr = [["test","1"],["demo","2"]];

function checkArrayElements(a, index, arr) {
  if(a[0]=="test"){
    delete arr[index];
    arr.splice(index,index+1);
  }
}
arr.forEach(checkArrayElements);
$("code").html(JSON.stringify(arr));

注意:这将使用0 element =“test”

删除arr中的所有内部数组