配列要素のコピー
【開発環境】
OS:Win11(64ビット)
VSCode1.72.2、
クロム
【指定した範囲の要素を持つ新しい配列の作成】
slice メソッドを使うと、引数に指定した範囲の要素を持つ新しい配列を作成できます。
・書式
配列名.slice()
配列名.slice(開始インデックス)
配列名.slice(開始インデックス, 終了インデックス)
配列名.slice()
配列名.slice(開始インデックス)
配列名.slice(開始インデックス, 終了インデックス)
開始インデックスで指定した要素から、終了インデックスの要素の直前の要素までを持つ新しい配列を返します。開始インデックスを省略した場合は 0 (配列の最初の要素)、終了インデックスを省略した場合は 配列名.length (結果として配列の最後の要素まで)が指定したものとして扱われます。
サンプルコード
let result = [75, 68, 92, 84, 90];
let newResult = result.slice(1, 3);
console.log(newResult);
> [68, 92]新しく取得する配列は インデックス 1 から 2 までの要素を持つ配列となります。もう一つのサンプル
let result = [75, 68, 92, 84, 90]; let newResult = result.slice(); console.log(newResult); > [75, 68, 92, 84, 90]今回のサンプルでは開始インデックスと終了インデックスがそれぞれ省略した形サンプル2let result = [['Yamada', 75], ['Suzuki', 68]]; let newResult = result.slice(0, 1); newResult[0][1] = 84; console.log(newResult[0]); >> ["Yamada", 84] console.log(result[0]);//元の配列要素が影響される。 >> ["Yamada", 84]
slice メソッドを使って配列の指定した範囲の要素を持つ新しい配列を作成しましたが、元の配列の要素は別の配列を参照しており、これは複製した配列の要素も同じ配列を参照します。その為、どちらかの配列で要素が参照している配列に対して変更を加えると、同じ配列をもう片方の配列の要素にも影響します。