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

你可以像这样使用 vanilla 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

您可以使用delete标准的 JavaScript 运算符: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 回答