jQuery从序列化数组中删除项目

时间:2012-12-03 16:35:21

标签: jquery arrays serialization

我正试图弄清楚如何使用索引从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 ?        
        }
    });
}

2 个答案:

答案 0 :(得分:3)

您可以delete使用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);​ a standard JavaScript operator

{{1}}

答案 1 :(得分:3)

您可以像这样使用vanilla JS'filter()方法:

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

filter()使用回调函数来测试数组的每个元素。如果函数返回true,则元素将出现在结果中。如果它返回false,则该元素将被删除。

所有主流浏览器和IE9 +都支持

filter()