array.splice()の面白い動作
-
29-09-2019 - |
質問
私はsplice()メソッドを実験していました jconsole
a = [1,2,3,4,5,6,7,8,9,10]
1,2,3,4,5,6,7,8,9,10
ここでは、Aは1〜10の単純な配列です。
b = ['a','b','c']
a,b,c
これはbです
a.splice(0, 2, b)
1,2
a
a,b,c,3,4,5,6,7,8,9,10
アレイBをスプライスの3番目の引数に渡すと、「Aの最初の2つの引数をインデックスゼロを削除し、Bアレイに置き換える」を意味します。 ArrayをSplice()の3番目の引数として渡すのを見たことがありません(すべて 私が読んだガイドページ 議論のリストについて話してください)、しかし、まあ、それはトリックをしているようです。 [1,2]は除去され、現在は[a、b、c、3,4,5,6,7,8,9,10]です。次に、別の配列を作成します。これをCと呼びます。
c = ['one','two','three']
one,two,three
そして、同じことをしてみてください:
a.splice(0, 2, c)
a,b,c,3
a
one,two,three,4,5,6,7,8,9,10
今回は、4(2の代わりに)要素が削除され[a、b、c、3]、最初にCアレイが追加されます。誰かが理由を知っていますか?解決策は些細なことだと確信していますが、今はわかりません。
解決
Array.splice
します いいえ 3番目のパラメーターとして配列をサポートします。
参照: https://developer.mozilla.org/en/javascript/reference/global_objects/array/splice
使用 Firebug (またはChrome's Console)、実際に何が起こるかを見ます:
a.splice(0, 2, b)
> [1, 2]
a
> [["a", "b", "c"], 3, 4, 5, 6, 7, 8, 9, 10]
ここで問題はJConsoleです toString()
配列を印刷するには Array.toString()
印刷しません []
.
所属していません StackOverflow