Array.prototype.fill()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2015å¹´9æ.
Array 實ä¾ç fill() æ¹æ³æå°é£å䏿åç¯åå
§çææå
ç´ æ´æ¹çºéæ
å¼ï¼ä¸¦åå³ä¿®æ¹å¾çé£åã
å試ä¸ä¸
const array1 = [1, 2, 3, 4];
// å¾ç´¢å¼ 2 å°ç´¢å¼ 4 ä½ç½®å¡«å
¥ 0
console.log(array1.fill(0, 2, 4));
// é æè¼¸åºï¼Array [1, 2, 0, 0]
// å¾ç´¢å¼ 1 éå§å¡«å
¥ 5
console.log(array1.fill(5, 1));
// é æè¼¸åºï¼Array [1, 5, 5, 5]
console.log(array1.fill(6));
// é æè¼¸åºï¼Array [6, 6, 6, 6]
èªæ³
fill(value)
fill(value, start)
fill(value, start, end)
忏
value-
è¦å¡«å ¥é£åçå¼ãè«æ³¨æï¼é£åä¸çææå ç´ é½ææ¯éå確åçå¼ã妿
valueæ¯ç©ä»¶ï¼åé£åä¸çæ¯åæ§½ä½é½æåè該ç©ä»¶ã start鏿æ§-
å¾é¶éå§çç´¢å¼ï¼æå®å¡«å çèµ·å§ä½ç½®ï¼æè½æçºæ´æ¸ã
- è² æ¸ç´¢å¼è¡¨ç¤ºå¾é£åæ«å°¾éå§è¨ç®ââ妿
-array.length <= start < 0ï¼åæä½¿ç¨start + array.lengthã - è¥
start < -array.lengthæçç¥startï¼åæä½¿ç¨0ã - è¥
start >= array.lengthï¼å䏿填å ä»»ä½ç´¢å¼ã
- è² æ¸ç´¢å¼è¡¨ç¤ºå¾é£åæ«å°¾éå§è¨ç®ââ妿
end鏿æ§-
å¾é¶éå§çç´¢å¼ï¼æå®å¡«å ççµæä½ç½®ï¼æè½æçºæ´æ¸ã
fill()æå¡«å å°endä¹åçä½ç½®ï¼ä¸å å«endï¼ã- è² æ¸ç´¢å¼è¡¨ç¤ºå¾é£åæ«å°¾éå§è¨ç®ââ妿
-array.length <= end < 0ï¼åæä½¿ç¨end + array.lengthã - è¥
end < -array.lengthï¼åæä½¿ç¨0ã - è¥
end >= array.lengthãendçç¥æçºundefinedï¼åæä½¿ç¨array.lengthï¼ä½¿ææå ç´ é½è¢«å¡«å ã - è¥
endæå®çä½ç½®æ©æ¼æçæ¼startæå®çä½ç½®ï¼å䏿填å ä»»ä½å ç´ ã
- è² æ¸ç´¢å¼è¡¨ç¤ºå¾é£åæ«å°¾éå§è¨ç®ââ妿
åå³å¼
ä¿®æ¹å¾çé£åï¼å¡«å
äº valueã
æè¿°
fill() æ¹æ³å±¬æ¼è®ç°æ¹æ³ï¼å®ä¸ææ¹è® this çé·åº¦ï¼ä½ææ´æ¹ this çå
§å®¹ã
fill() æ¹æ³ä¹æå¡«å
ç¨çé£åä¸ç空槽ï¼ä½¿å
¶å¼è®çº valueã
fill() æ¹æ³æ¯éç¨çï¼å®åªè¦æ± this ç©ä»¶å
·æ length 屬æ§ãéç¶å串å
·æé¡ä¼¼é£åçç¹æ§ï¼ä½å çºå串æ¯ä¸å¯è®çï¼ç¡æ³å°å
¶ä½¿ç¨æ¤æ¹æ³ã
å註ï¼å¦æå°é·åº¦çº 0 ç空é£åï¼length = 0ï¼ä½¿ç¨ Array.prototype.fill()ï¼å䏿ç¢çä»»ä½è®åï¼å çºé£åå
§æ²æä»»ä½å
ç´ å¯ä¾ä¿®æ¹ãè¥è¦å¨å®£åé£åæä½¿ç¨ Array.prototype.fill()ï¼è«ç¢ºä¿é£åç length çºéé¶å¼ãåè¦ç¯ä¾ã
ç¯ä¾
>ä½¿ç¨ fill()
console.log([1, 2, 3].fill(4)); // [4, 4, 4]
console.log([1, 2, 3].fill(4, 1)); // [1, 4, 4]
console.log([1, 2, 3].fill(4, 1, 2)); // [1, 4, 3]
console.log([1, 2, 3].fill(4, 1, 1)); // [1, 2, 3]
console.log([1, 2, 3].fill(4, 3, 3)); // [1, 2, 3]
console.log([1, 2, 3].fill(4, -3, -2)); // [4, 2, 3]
console.log([1, 2, 3].fill(4, NaN, NaN)); // [1, 2, 3]
console.log([1, 2, 3].fill(4, 3, 5)); // [1, 2, 3]
console.log(Array(3).fill(4)); // [4, 4, 4]
// å®ä¸ç©ä»¶çåèï¼é£åä¸çæ¯åæ§½ä½é½æåç¸åçç©ä»¶ï¼
const arr = Array(3).fill({}); // [{}, {}, {}]
arr[0].hi = "hi"; // [{ hi: "hi" }, { hi: "hi" }, { hi: "hi" }]
ä½¿ç¨ fill() 建ç«å ¨çº 1 çç©é£
æ¤ç¯ä¾å±ç¤ºå¦ä½å»ºç«ä¸åå
¨çº 1 çç©é£ï¼é¡ä¼¼æ¼ Octave æ MATLAB ç ones() å½å¼ã
const arr = new Array(3);
for (let i = 0; i < arr.length; i++) {
arr[i] = new Array(4).fill(1); // 建ç«é·åº¦çº 4ï¼ä¸å
¨é¨å¡«å
¥ 1 çé£å
}
arr[0][0] = 10;
console.log(arr[0][0]); // 10
console.log(arr[1][0]); // 1
console.log(arr[2][0]); // 1
ä½¿ç¨ fill() ä¾å¡«å 空é£å
æ¤ç¯ä¾å±ç¤ºå¦ä½å¡«å
ä¸åé£åï¼ä½¿ææå
ç´ é½è¨çºç¹å®å¼ãend 忏䏿¯å¿
é çã
const tempGirls = Array(5).fill("girl", 0);
è«æ³¨æï¼è©²é£åæåæ¯ä¸åç¨çé£åï¼ä½ fill() ä»ç¶è½å¤ å¡«å
æ¤é£åã
å¨éé£åç©ä»¶ä¸èª¿ç¨ fill()
fill() æ¹æ³æè®å this ç length 屬æ§ï¼ä¸¦å° start å° end ä¹éçæææ´æ¸éµå±¬æ§è¨å®çº valueã
const arrayLike = { length: 2 };
console.log(Array.prototype.fill.call(arrayLike, 1));
// { '0': 1, '1': 1, length: 2 }
è¦ç¯
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-array.prototype.fill> |