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

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

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

「テスト」 (一意の)キーワードで一致する配列が見つかった場合は、削除します["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 に答える