22

スライスを使用して配列から要素を削除しようとしていますが、機能させることができません。このコードを見てください。

    console.log(this.activeEffects); // Prints my array
    console.log(this.activeEffects.slice(0,1)); // Remove from index 0, and remove one.
    console.log(this.activeEffects); // Prints array again, this time my element should be gone

この結果はです。

ここに画像の説明を入力してください

したがって、これから得られるのは、最初は配列全体であるはずです。次に、配列のスライスされたものを出力します。最後に3番目は空にする必要がありますか?また?

4

7 に答える 7

30

を探していると思いますspliceW3 学校から:

splice() メソッドは、配列にアイテムを追加/配列から削除し、削除されたアイテムを返します。

そのページの例を見てください。そこにあるユースケースは、達成したいものに似ています。

編集: Nicosunshine が提案する MDN への代替リンク; コマンドに関するより多くの情報があります。

于 2012-08-07T14:51:53.467 に答える
7

.slice.splice()配列を変更しません。配列内のインデックスにあるアイテムを削除するために使用できますi

this.activeEffects.splice(i, 1)
于 2012-08-07T14:50:43.790 に答える
1

Array.prototype.slice()..。

元の配列を変更しませんが、元の配列からスライスされた要素のコピーを含む新しい「1レベルの深さ」のコピーを返します。元の配列の要素は、次のように新しい配列にコピーされます。

一方..。Array.prototype.splice()

配列の内容を変更し、古い要素を削除しながら新しい要素を追加します。

この例は違いを説明する必要があります。

// sample array
var list = ["a","b","c","d"];
// slice returns a new array
console.log("copied items: %o", list.slice(2));
// but leaves list itself unchanged
console.log("list: %o", list);
// splice modifies the array and returns a list of the removed items
console.log("removed items: %o", list.splice(2));
// list has changed
console.log("list: %o", list);

于 2012-08-07T14:54:07.657 に答える
-1

ここを見てください: http ://www.w3schools.com/jsref/jsref_slice_array.asp

スライスメソッドがオブジェクトを選択し、それらを新しい配列オブジェクトにスローすることがわかります^^したがって、このようなオブジェクトを削除することはできません。次のようなことを試すことができます。

var a = ["a","b","c"]; (pseudo code)
/* I wan't to remove the "b" object */

var result = a.slice(0,1)+a.slice(2,1); /* If you considers that "+" is a concatenation operator, i don't remember if it is true... */
于 2012-08-07T14:54:08.643 に答える