これは Harmony(ECMAScript 6) 提案の一部であり、実験段階の技術です。
この技術の仕様は安定していません。ブラウザ互換性の一覧表を確認してください。またこれらの構文や動作は、仕様変更などにより、新しいバージョンのブラウザでは変更される可能性があるという点に注意してください。
概要
fill() メソッドは、開始位置から終了位置までの配列の要素を固定値で設定します。
構文
arr.fill(value[, start = 0[, end = this.length]])
引数
value- 配列に設定する値。
start- オプション。開始位置。
end- オプション。終了位置。
説明
設定できる要素の範囲は [start, end) です。
fill メソッドは最大 3 つの引数 value、start、end をとります。start と end はオプションの引数で、デフォルト値は 0 および this オブジェクトの length です。
start が負の値の場合、length+start として扱われます (length は配列の長さ)。end が負の値の場合、length+end として扱われます。
fill 関数はジェネリック関数であり、this が配列オブジェクトである必要はありません。
fill メソッドは可変メソッドで、this オブジェクト自身を変更し、オブジェクト自身のコピーではなく、オブジェクト自身を返します。
例
[1, 2, 3].fill(4) // [4, 4, 4]
[1, 2, 3].fill(4, 1) // [1, 4, 4]
[1, 2, 3].fill(4, 1, 2) // [1, 4, 3]
[1, 2, 3].fill(4, 1, 1) // [1, 2, 3]
[1, 2, 3].fill(4, -3, -2) // [4, 2, 3]
[1, 2, 3].fill(4, NaN, NaN) // [1, 2, 3]
[].fill.call({ length: 3 }, 4) // {0: 4, 1: 4, 2: 4, length: 3}
互換性
if (!Array.prototype.fill) {
Array.prototype.fill = function(value) {
// Steps 1-2.
if (this == null) {
throw new TypeError('this is null or not defined');
}
var O = Object(this);
// Steps 3-5.
var len = O.length >>> 0;
// Steps 6-7.
var start = arguments[1];
var relativeStart = start >> 0;
// Step 8.
var k = relativeStart < 0 ?
Math.max(len + relativeStart, 0) :
Math.min(relativeStart, len);
// Steps 9-10.
var end = arguments[2];
var relativeEnd = end === undefined ?
len : end >> 0;
// Step 11.
var final = relativeEnd < 0 ?
Math.max(len + relativeEnd, 0) :
Math.min(relativeEnd, len);
// Step 12.
while (k < final) {
O[k] = value;
k++;
}
// Step 13.
return O;
};
}
仕様
| 仕様 | ステータス | コメント |
|---|---|---|
| ECMAScript 6 (ECMA-262) The definition of 'Array.prototype.fill' in that specification. |
勧告候補 | 初回定義 |
ブラウザ実装状況
| 機能 | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| 基本サポート | 未サポート | 未サポート | 31.0 (31) | 未サポート | 未サポート | iOS 8 |
[1] 設定で機能は隠されていますが、使用可能です。chrome://flags で、“Enable Experimental JavaScript” の項目を有効化してください。