Array.prototype.fill()
åºçº¿
广æ³å¯ç¨
èª 2015å¹´9æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
fill() æ¹æ³ç¨ä¸ä¸ªåºå®å¼å¡«å
ä¸ä¸ªæ°ç»ä¸ä»èµ·å§ç´¢å¼ï¼é»è®¤ä¸º 0ï¼å°ç»æ¢ç´¢å¼ï¼é»è®¤ä¸º array.lengthï¼å
çå
¨é¨å
ç´ ãå®è¿åä¿®æ¹åçæ°ç»ã
å°è¯ä¸ä¸
const array1 = [1, 2, 3, 4];
// Fill with 0 from position 2 until position 4
console.log(array1.fill(0, 2, 4));
// Expected output: Array [1, 2, 0, 0]
// Fill with 5 from position 1
console.log(array1.fill(5, 1));
// Expected output: Array [1, 5, 5, 5]
console.log(array1.fill(6));
// Expected output: Array [6, 6, 6, 6]
è¯æ³
fill(value)
fill(value, start)
fill(value, start, end)
åæ°
value-
ç¨æ¥å¡«å æ°ç»å ç´ çå¼ãæ³¨ææææ°ç»ä¸çå ç´ é½å°æ¯è¿ä¸ªç¡®å®çå¼ï¼å¦æ
valueæ¯ä¸ªå¯¹è±¡ï¼é£ä¹æ°ç»çæ¯ä¸é¡¹é½ä¼å¼ç¨è¿ä¸ªå ç´ ã startå¯é-
åºäºé¶çç´¢å¼ï¼ä»æ¤å¼å§å¡«å ï¼è½¬æ¢ä¸ºæ´æ°ã
- è´æ°ç´¢å¼ä»æ°ç»çæ«ç«¯å¼å§è®¡ç®ï¼å¦æ
start < 0ï¼å使ç¨start + array.lengthã - 妿
start < -array.lengthæstart被çç¥ï¼å使ç¨0ã - 妿
start >= array.lengthï¼æ²¡æç´¢å¼è¢«å¡«å ã
- è´æ°ç´¢å¼ä»æ°ç»çæ«ç«¯å¼å§è®¡ç®ï¼å¦æ
endå¯é-
åºäºé¶çç´¢å¼ï¼å¨æ¤ç»æå¡«å ï¼è½¬æ¢ä¸ºæ´æ°ã
fill()å¡«å å°ä½ä¸å å«endç´¢å¼ã- è´æ°ç´¢å¼ä»æ°ç»çæ«ç«¯å¼å§è®¡ç®ï¼å¦æ
end < 0ï¼å使ç¨end + array.lengthã - 妿
end < -array.lengthï¼å使ç¨0ã - 妿
end >= array.lengthæend被çç¥ï¼å使ç¨array.lengthï¼å¯¼è´ææç´¢å¼é½è¢«å¡«å ã - å¦æç»æ åååï¼
endçä½ç½®å¨startä¹åæä¹ä¸ï¼æ²¡æç´¢å¼è¢«å¡«å ã
- è´æ°ç´¢å¼ä»æ°ç»çæ«ç«¯å¼å§è®¡ç®ï¼å¦æ
è¿åå¼
ç» value å¡«å
ä¿®æ¹åçæ°ç»ã
æè¿°
fill() æ¯ä¸ªä¿®æ¹æ¹æ³ï¼ä¸ä¼æ¹å this çé¿åº¦ï¼ä½ä¼æ¹å this çå
容ã
fill() ä¹ä¼ä½¿ç¨ value å¡«å
ç¨çæ°ç»ç空槽ã
fill() æ¹æ³æ¯éç¨çãå®åªææ this 弿ä¸ä¸ª length 屿§ãè½ç¶åç¬¦ä¸²ä¹æ¯ç±»ä¼¼æ°ç»çï¼ä½è¿ä¸ªæ¹æ³ä¸éååºç¨äºå®ä»¬ï¼å 为å符串æ¯ä¸å¯åçã
夿³¨ï¼å¨ä¸ä¸ªç©ºæ°ç»ï¼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 çæ¯ä¸ªæ´æ°å±æ§çå¼ã
const arrayLike = { length: 2 };
console.log(Array.prototype.fill.call(arrayLike, 1));
// { '0': 1, '1': 1, length: 2 }
è§è
| è§è |
|---|
| ECMAScript® 2027 Language Specification> # sec-array.prototype.fill> |