8

I have a string indexed array that I would like to remove an item from.

Consider the following example code:

    var arr = new Array();       
    arr[0] = "Zero";
    arr[1] = "One";
    arr[2] = "Two";
    arr.splice(1, 1);

    for (var index in arr)
        document.writeln(arr[index] + " ");

    //This will write: Zero Two

    var arr = new Array();
    arr["Zero"] = "Zero";
    arr["One"] = "One";
    arr["Two"] = "Two";

    arr.splice("One", 1); //This does not work
    arr.splice(1, 1); //Neither does this

    for (var index in arr)
        document.writeln(arr[index] + " ");

    //This will write: Zero One Two

How do I remove "One" from the second example like I did in the first?

1

2 Answers 2

20

The proper way to do this is not with an Array but an object:

var x = {};
x['Zero'] = 'Zero';
x['One'] = 'One';
x['Two'] = 'Two';
console.log(x); //  Object Zero=Zero One=One Two=Two
delete x['One'];
console.log(x); //  Object Zero=Zero Two=Two
Sign up to request clarification or add additional context in comments.

3 Comments

@Daniel - no it doesn't, that's not modifying the array. Do arr.length after adding your value and before deleting it.
@Daniel You are confusing Objects and Arrays, and then within arrays the differences between delete vs splice: stackoverflow.com/questions/500606/…
No, not confusing. Just did not know how it works. But the link you posted gives a good explanation. Very helpful in this threat.
5

Once an Array has string keys (or numbers that don't follow), it becomes an Object.

An object doesn't have the splice method (or not the same as Array). You have to write your own, by making a new object and copy into it the key you want to keep.

But be careful ! The keys are not always ordered in the same way they were added in the object ! It depends on the browser.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.