Array.prototype.toSpliced()
åºçº¿
广æ³å¯ç¨
èª 2023å¹´7æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
Array å®ä¾ç toSpliced() æ¹æ³æ¯ splice() æ¹æ³çå¤å¶çæ¬ãå®è¿åä¸ä¸ªæ°æ°ç»ï¼å¹¶å¨ç»å®çç´¢å¼å¤å é¤å/ææ¿æ¢äºä¸äºå
ç´ ã
è¯æ³
toSpliced(start)
toSpliced(start, deleteCount)
toSpliced(start, deleteCount, item1)
toSpliced(start, deleteCount, item1, item2, itemN)
åæ°
start-
ä» 0 å¼å§è®¡ç®çç´¢å¼ï¼è¡¨ç¤ºè¦å¼å§æ¹åæ°ç»çä½ç½®ï¼å®ä¼è¢«è½¬æ¢ä¸ºæ´æ°ã
- 妿
start < 0ï¼å仿°ç»æ«å°¾å¼å§è®¡æ°ï¼ä½¿ç¨start + array.lengthã - 妿
start < -array.lengthæè çç¥äºstartï¼å使ç¨0ã - 妿
start >= array.lengthï¼ä¸ä¼å é¤ä»»ä½å ç´ ï¼ä½è¯¥æ¹æ³å°è¡¨ç°ä¸ºæ·»å å ç´ ç彿°ï¼æ·»å æä¾çææå ç´ ã
- 妿
deleteCountå¯é-
ä¸ä¸ªæ´æ°ï¼æç¤ºæ°ç»ä¸è¦ä»
startå é¤çå ç´ æ°éã妿
deleteCount被çç¥äºï¼æè 妿å®çå¼å¤§äºæçäºç±startæå®çä½ç½®å°æ°ç»æ«å°¾çå ç´ æ°éï¼å°ä¼å é¤ä»startå°æ°ç»æ«å°¾çææå ç´ ã使¯ï¼å¦æä½ æ³è¦ä¼ éä»»ä½itemNåæ°ï¼ååºådeleteCountä¼ éInfinityå¼ï¼ä»¥å é¤startä¹åçææå ç´ ï¼å 为æ¾å¼çundefinedä¼è½¬æ¢ä¸º0ã妿
deleteCountæ¯0æè è´æ°ï¼åä¸ä¼å é¤å ç´ ãå¨è¿ç§æ åµä¸ï¼ä½ åºè¯¥æå®è³å°ä¸ä¸ªæ°å ç´ ï¼è§ä¸æï¼ã item1, â¦,itemNå¯é-
å ç´ å°ä»
startå¼å§æ·»å å°æ°ç»å½ä¸ãå¦æä½ æ²¡ææå®ä»»ä½å ç´ ï¼
toSpliced()åªä¼ä»æ°ç»ä¸å é¤å ç´ ã
è¿åå¼
ä¸ä¸ªæ°æ°ç»ï¼ç± start ä¹åçææå
ç´ ãitem1ãitem2ã...ãitemNï¼ä»¥å start + deleteCount ä¹åçææå
ç´ ç»æã
æè¿°
toSpliced() æ¹æ³ä¸ splice() 类似ï¼å¯ä»¥åæ¶å®æå¤ä¸ªæä½ï¼å¨æ°ç»ä¸ç»å®çç´¢å¼å¼å§ç§»é¤æå®æ°éçå
ç´ ï¼ç¶åå¨ç¸åçç´¢å¼å¤æå
¥ç»å®çå
ç´ ã使¯ï¼å®è¿åä¸ä¸ªæ°æ°ç»ï¼è䏿¯ä¿®æ¹åå§æ°ç»ãå æ¤ï¼æ¤æ¹æ³ä¸ä¼è¿åå·²å é¤çå
ç´ ã
toSpliced() æ¹æ³ä¸ä¼äº§çç¨çæ°ç»ã妿åå§æ°ç»æ¯ç¨ççï¼å¨æ°æ°ç»ä¸ç©ºæ§½å°ä¼è¢«æ¿æ¢æ undefinedã
toSpliced() æ¹æ³æ¯éç¨çãå®åªææ this å¼å
·æ length 屿§åæ´æ°é®å±æ§ã
示ä¾
>å é¤ãæ·»å åæ¿æ¢å ç´
ä½ å¯ä»¥éè¿ä½¿ç¨ toSpliced() æ¥å é¤ãæ·»å åæ¿æ¢æ°ç»ä¸çå
ç´ ï¼å¹¶çæä¸ä¸ªæ°çæ°ç»ï¼è¿æ¯ä½¿ç¨ slice() å concat() æ´é«æã
const months = ["Jan", "Mar", "Apr", "May"];
// å¨ç´¢å¼ 1 夿·»å ä¸ä¸ªå
ç´
const months2 = months.toSpliced(1, 0, "Feb");
console.log(months2); // ["Jan", "Feb", "Mar", "Apr", "May"]
// ä»ç¬¬ 2 个索å¼å¼å§å é¤ä¸¤ä¸ªå
ç´
const months3 = months2.toSpliced(2, 2);
console.log(months3); // ["Jan", "Feb", "May"]
// å¨ç´¢å¼ 1 å¤ç¨ä¸¤ä¸ªæ°å
ç´ æ¿æ¢ä¸ä¸ªå
ç´
const months4 = months3.toSpliced(1, 1, "Feb", "Mar");
console.log(months4); // ["Jan", "Feb", "Mar", "May"]
// åæ°ç»ä¸ä¼è¢«ä¿®æ¹
console.log(months); // ["Jan", "Mar", "Apr", "May"]
å¨ç¨çæ°ç»ä¸ä½¿ç¨ toSpliced()
toSpliced() æ¹æ³æ»æ¯ä¼çæä¸ä¸ªå¯éçæ°ç»ã
const arr = [1, , 3, 4, , 6];
console.log(arr.toSpliced(1, 2)); // [1, 4, undefined, 6]
坹鿰ç»å¯¹è±¡è°ç¨ toSpliced()
toSpliced() æ¹æ³å°ä¼è¯»å this ç length 屿§ãç¶åï¼å®è¯»åæéçæ´æ°é®å±æ§å¹¶å°å
¶åå
¥æ°æ°ç»ã
const arrayLike = {
length: 3,
unrelated: "foo",
0: 5,
2: 4,
};
console.log(Array.prototype.toSpliced.call(arrayLike, 0, 1, 2, 3));
// [2, 3, undefined, 4]
è§è
| è§è |
|---|
| ECMAScript® 2027 Language Specification> # sec-array.prototype.tospliced> |