Delete an array key when it contains a string in javascript

I have an array in javascript that looks like this:

arr = ["md51234","md55234"]

I'm trying to remove an item from this by doing:

delete arr["md51234"]

But this doesn't seem to work. Is there another way to remove this?

@dystroy provided the answer, I added indexOf to the array prototype for non-compliant browsers:

if (!Array.prototype.indexOf) {
    Array.prototype.indexOf = function(obj, start) {
         for (var i = (start || 0), j = this.length; i < j; i++) {
             if (this[i] === obj) { return i; }
         }
         return -1;
    }
}

Answers:

Answer

You must provide the index, not the value :

delete arr[0];

Alternatively, you could also use indexOf on most browsers

delete arr[arr.indexOf("md51234")];

But note that delete doesn't make the array shorter, it just make a value undefined. Your array after having used delete is

[undefined, "md55234"]

If you want to make the array shorter, use

arr.splice(0, 1); // first parameter is index of element to remove, second one is number of elements to  remove

This makes

["md55234"]
Answer

Different approach using jQuery:

arr = ["a", "b", "c", "d", "e"];

Remove item by index:

arr = jQuery.grep(arr, function(value, index) {
    return index != 2;
});

Remove item by value:

arr = jQuery.grep(arr, function(value, index) {
    return value != "a";
});

Tags

Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us

©2020 All rights reserved.