Search code examples
javascriptjqueryarraysjavascript-objects

Javascript removing an object element from an array in a clean way (not leaving a null ghost)


I have an array:

var Array = {};
Array['elements'] = [];
Array['elements'][0]['name'] = "Sally";
Array['elements'][0]['age'] = "20";
Array['elements'][3]['name'] = "Jack";
Array['elements'][3]['age'] = "21";
Array['elements'][4]['name'] = "Megan";
Array['elements'][4]['age'] = "22";

I do not know how to remove Jack from the array to return a list of women only. Splice is mutable, and passing back the entire object seems inefficient, and cumbersome.

In PHP, you can:

unset($Array['elements'][3]);

I have tried

delete Array['elements'][3];

but that just yields a null value in its place, not really deleting the element, messing up everywhere else I am testing for elements. Is there a clean way to delete an element from an array based on its key?

Thanks!


Solution

  • You can remove items from an array by splicing it:

    var a = [1,2,3,4,5]
    var removed = a.splice(1,2)
    

    a becomes:

    [1,4,5]
    

    And removed contains:

    [2,3]
    

    You can select a new, filtered list by referring to Nidhin's answer.


    As an aside, the code in your question is not JavaScript... Are you running that gibberish successfully somewhere?