-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 に答える