-1

我在 javascript 中有一个如下所示的数组:

arr = ["md51234","md55234"]

我正在尝试通过执行以下操作从中删除一个项目:

delete arr["md51234"]

但这似乎不起作用。有没有其他方法可以删除它?

@dystroy 提供了答案,我将 indexOf 添加到不兼容浏览器的数组原型中:

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;
    }
}
4

2 回答 2

4

您必须提供索引,而不是值:

delete arr[0];

或者,您也可以在大多数浏览器上使用indexOf

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

但请注意,删除不会使数组更短,它只会使值未定义。您使用后的阵列delete

[undefined, "md55234"]

如果要使数组更短,请使用

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

这使得

["md55234"]
于 2012-10-25T19:55:35.183 回答
-1

使用 jQuery 的不同方法:

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

按索引删除项目:

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

按值删除项目:

arr = jQuery.grep(arr, function(value, index) {
    return value != "a";
});
于 2012-10-25T20:20:13.103 回答