jQuery remove item from serialized array

11,414

Solution 1

You could use vanilla JS' filter() method like this:

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

filter() uses the callback function to test each element of the array. If the function returns true the element will be in the result. If it returns false, the element will be dropped.

filter() is supported by all major browsers and IE9+.

Solution 2

You can use delete which is a standard JavaScript operator: 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);​
Share:
11,414
Spencer Mark
Author by

Spencer Mark

Updated on July 26, 2022

Comments

  • Spencer Mark
    Spencer Mark almost 2 years

    I'm trying to figure out how to remove item from serializedArray by using the index. The following scenario:

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

    Now I would like to remove 'item2' - I can use the following function - but not sure how to remove it - is there some sort of unset() method or something like this:?

    serializeRemove : function(thisArray, thisName) {
        "use strict";
        $.each(thisArray, function(index, item) {
            if (item.name == thisName) {
                // what to do here ?        
            }
        });
    }
    
    • Kevin B
      Kevin B over 11 years
      Where does this serialzed array come from? could you exclude it from the collection that creates this serialized array?
  • Salman A
    Salman A over 11 years
    Keep in mind that the length of array remains unaffected -- which may not be desired.
  • Cymen
    Cymen over 11 years
    Good point -- there are other options that will decrease the length: stackoverflow.com/questions/500606/…
  • fudu
    fudu almost 5 years
    "delete array[index];" should be "delete thisArray[index]; " to make this work