0

と同じことを行う関数を実装するにはどうすればよいArrayList.remove(o)ですか?

私が持っている最も近いものは

Array.prototype.remove = function(o) {
    var index = this.indexOf(o);
    if(index == -1) {
        return;
    }
    return this.splice(index, index);
}

ただし、2行目にエラーが発生し、indexOf(o)存在しないと主張します。(cannot find function indexOf()

4

2 に答える 2

4

Array.prototype.indexOfIE7以下ではサポートされていません。したがって、前にそのメソッドもシムする必要があります。

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

(簡略化した例)

さらに、への呼び出し.splice()が間違っています。2番目の引数は、削除する要素の長さであり、である必要があります1

Array.prototype.remove = function(o) {
    var index = this.indexOf(o);
    if(~index) {
        this.splice(index, 1);
    }
};
于 2012-04-26T15:04:44.967 に答える
1

もう1つのアイデアは、「連想配列」、つまり名前と値のペアを持つオブジェクトリテラルを使用し、最近のすべてのブラウザで機能する削除演算子を使用することです。

var arr = {'x': somval, 'y': someval2 ...}
delete arr.x;
于 2012-04-26T15:09:55.777 に答える