var arr = [["test","1"],["demo","2"]];
// $.inArray() ???
// .splice() ???
// $.each() ???
$("code").html(JSON.stringify(arr));
如果我会通过“test”(唯一)关键字找到匹配的数组,我会删除["test","1"]
删除后的arr
将为[["demo","2"]]
我该怎么做?
答案 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中的所有内部数组