指定した範囲の配列の要素を指定した値で上書き - fill
《 初回公開:2023/10/19 , 最終更新:未 》
指定した範囲の配列の要素を指定した値で上書きする。
- 構文
- array.fill(value[, start[, end]])
- 引数
-
- value
- 配列の要素に設定する値。
- start (オプション)
- 値を設定する開始位置のインデックス、デフォルト値は 0 。
- end(オプション)
- 値を設定する終了位置のインデックス。
指定したインデックスの一つ前までの要素に対してvalueが代入される。
デフォルト値は配列の末尾(length)。
fillは破壊的メソッド、メソッドから返される値は破壊された配列自身を返す。
const array = ["a", "b", "c"];
const fill_array= array.fill("x");
// arrayもfill_arrayも同じ
console.log(array, fill_array) // ['x', 'x', 'x'] ['x', 'x', 'x']
start引数を指定。
const array = ["a", "b", "c"];
array.fill("x", 1);
console.log(array); // ['a', 'x', 'x']
end引数も指定。
注意が必要なのはendで指定したインデックスの一つ前までの要素に対してvalueが代入される。
const array = ["a", "b", "c"];
array.fill("x", 1, 2);
console.log(array); // ['a', 'x', 'c']
end引数がstart引数以下であったり該当する要素の範囲に矛盾がある場合、fillメソッドは何もしない。
const array = ["a", "b", "c"];
array.fill("x", 1, 1);
console.log(array); // ['a', 'b', 'c']
負の値を指定すると配列の最後のインデックスからの位置を示す。
すなわち、start が負の場合 array.length + start, end が負の場合 array.length + end。
const array = ["a", "b", "c"];
array.fill("x", -2, -1);
console.log(array); // ['a', 'x', 'c']
value引数がオブジェクトの場合、参照が代入される。
const array = ["a", "b", "c"];
const obj = new Object();
array.fill(obj, 1, 2);
// オブジェクトが変更されると配列の要素にも反映される
obj.p = "xxx";
console.log(JSON.stringify(array)); // ["a",{"p":"xxx"},"c"]
fillメソッドは配列のインデクスの範囲を変更しない。
しかし、空のスロットがあっても処理をスキップしない。
// 空の配列を定義
const array = [];
array.fill("x");
// 配列が空なので何もしない
console.log(array); // []
// 配列のlengthプロパティを変更すると要素数分だけ値で満たされる
array.length = 3
array.fill("x");
console.log(array); // ['x', 'x', 'x']