1
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

4

5 回答 5

2

filter是为了:

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

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

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

修改器方法,例如splice使代码更难阅读和调试。

于 2013-03-15T11:33:51.820 回答
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');

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

于 2013-03-15T11:29:50.557 回答
1

也许是这样的:

for(var i = 0; i < arr.length; i++) {
  if(arr[i][0] == "test") {
   arr.splice(i, 1);
   break;
  }
}
于 2013-03-15T11:30:11.207 回答
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;
} 
于 2013-03-15T11:42:42.080 回答
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));

注意:这将删除 arr 中任何带有 0 元素 = "test" 的内部数组

于 2013-03-15T11:53:44.653 回答