9

インデックスを使用して serializedArray からアイテムを削除する方法を見つけようとしています。次のシナリオ:

[ 
    { 'name' : 'item1', 'value' : '1' }, 
    { 'name' : 'item2', 'value' : '2' }, 
    { 'name' : 'item3', 'value' : 3 } 
]

「item2」を削除したいと思います - 次の関数を使用できます - しかし、それを削除する方法がわかりません - unset() メソッドまたはこのようなものがあります:?

serializeRemove : function(thisArray, thisName) {
    "use strict";
    $.each(thisArray, function(index, item) {
        if (item.name == thisName) {
            // what to do here ?        
        }
    });
}
4

2 に答える 2

4

次のようなバニラ JS のfilter()メソッドを使用できます。

serializeRemove : function(thisArray, thisName) {
    "use strict";
    return thisArray.filter( function( item ) {
               return item.name != thisName;
           });
}

filter() コールバック関数を使用して、配列の各要素をテストします。関数が返す場合true、要素は結果になります。が返された場合false、要素は削除されます。

filter()すべての主要なブラウザーと IE9+ でサポートされています。

于 2012-12-03T16:40:32.237 に答える
3

標準の JavaScript 演算子deleteであるhttp://jsfiddle.net/2NsUD/を使用できます。

var array = [ 
    { 'name' : 'item1', 'value' : '1' }, 
    { 'name' : 'item2', 'value' : '2' }, 
    { 'name' : 'item3', 'value' : 3 } 
];

var arrayClean = function(thisArray, thisName) {
    "use strict";
    $.each(thisArray, function(index, item) {
        if (item.name == thisName) {
            delete thisArray[index];      
        }
    });
}

console.log(array);
arrayClean(array, 'item3');
console.log(array);​
于 2012-12-03T16:39:42.110 に答える