Array.prototype.splice()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since â¨2015å¹´7æâ©.
splice() æ¹æ³å°±å°ç§»é¤æè
æ¿æ¢å·²åå¨çå
ç´ å/ææ·»å æ°çå
ç´ ã
è¦å建ä¸ä¸ªå é¤å/ææ¿æ¢é¨åå
容è䏿¹ååæ°ç»çæ°æ°ç»ï¼è¯·ä½¿ç¨ toSpliced()ãè¦è®¿é®æ°ç»çä¸é¨åèä¸ä¿®æ¹å®ï¼åè§ slice()ã
å°è¯ä¸ä¸
const months = ["Jan", "March", "April", "June"];
months.splice(1, 0, "Feb");
// Inserts at index 1
console.log(months);
// Expected output: Array ["Jan", "Feb", "March", "April", "June"]
months.splice(4, 1, "May");
// Replaces 1 element at index 4
console.log(months);
// Expected output: Array ["Jan", "Feb", "March", "April", "May"]
è¯æ³
splice(start)
splice(start, deleteCount)
splice(start, deleteCount, item1)
splice(start, deleteCount, item1, item2)
splice(start, deleteCount, item1, item2, /* â¦, */ itemN)
åæ°
start-
ä» 0 å¼å§è®¡ç®çç´¢å¼ï¼è¡¨ç¤ºè¦å¼å§æ¹åæ°ç»çä½ç½®ï¼å®ä¼è¢«è½¬æ¢ææ´æ°ã
- è´ç´¢å¼ä»æ°ç»æ«å°¾å¼å§è®¡ç®ââ妿
-buffer.length <= start < 0ï¼ä½¿ç¨start + array.lengthã - 妿
start < -array.lengthï¼ä½¿ç¨0ã - 妿
start >= array.lengthï¼åä¸ä¼å é¤ä»»ä½å ç´ ï¼ä½æ¯è¯¥æ¹æ³ä¼è¡¨ç°ä¸ºæ·»å å ç´ ç彿°ï¼æ·»å ææä¾çé£äºå ç´ ã - 妿
start被çç¥äºï¼å³è°ç¨splice()æ¶ä¸ä¼ éåæ°ï¼ï¼åä¸ä¼å é¤ä»»ä½å ç´ ãè¿ä¸ä¼ éundefinedä¸åï¼åè ä¼è¢«è½¬æ¢ä¸º0ã
- è´ç´¢å¼ä»æ°ç»æ«å°¾å¼å§è®¡ç®ââ妿
deleteCountå¯é-
ä¸ä¸ªæ´æ°ï¼è¡¨ç¤ºæ°ç»ä¸è¦ä»
startå¼å§å é¤çå ç´ æ°éã妿çç¥äº
deleteCountï¼æè å ¶å¼å¤§äºæçäºç±startæå®çä½ç½®å°æ°ç»æ«å°¾çå ç´ æ°éï¼é£ä¹ä»startå°æ°ç»æ«å°¾çææå ç´ å°è¢«å é¤ã使¯ï¼å¦æä½ æ³è¦ä¼ éä»»ä½itemNåæ°ï¼ååºådeleteCountä¼ éInfinityå¼ï¼ä»¥å é¤startä¹åçææå ç´ ï¼å 为æ¾å¼çundefinedä¼è½¬æ¢ä¸º0ã妿
deleteCountæ¯0æè è´æ°ï¼åä¸ä¼ç§»é¤ä»»ä½å ç´ ãå¨è¿ç§æ åµä¸ï¼ä½ åºè¯¥è³å°æå®ä¸ä¸ªæ°å ç´ ï¼è¯·åè§ä¸æï¼ã item1ãâ¦ãitemNå¯é-
ä»
startå¼å§è¦å å ¥å°æ°ç»ä¸çå ç´ ã妿䏿å®ä»»ä½å ç´ ï¼
splice()å°åªä»æ°ç»ä¸å é¤å ç´ ã
è¿åå¼
ä¸ä¸ªå å«äºå é¤çå ç´ çæ°ç»ã
妿åªç§»é¤ä¸ä¸ªå ç´ ï¼åè¿åä¸ä¸ªå ç´ çæ°ç»ã
å¦ææ²¡æå é¤ä»»ä½å ç´ ï¼åè¿åä¸ä¸ªç©ºæ°ç»ã
æè¿°
splice() æ¹æ³æ¯ä¸ä¸ªä¿®æ¹æ¹æ³ãå®å¯è½ä¼æ´æ¹ this çå
容ã妿æå®çè¦æå
¥çå
ç´ æ°éä¸è¦å é¤çå
ç´ æ°éä¸åï¼æ°ç»ç length ä¹å°ä¼æ´æ¹ãåæ¶ï¼å®ä¼ä½¿ç¨ [Symbol.species] æ¥å建ä¸ä¸ªæ°æ°ç»å®ä¾å¹¶è¿åã
妿å é¤çé¨åæ¯ç¨ççï¼å splice() è¿åçæ°ç»ä¹æ¯ç¨ççï¼å¯¹åºçç´¢å¼ä¸ºç©ºæ§½ã
splice() æ¹æ³æ¯éç¨çãå®åªææ this å¼å
·æ length 屿§åæ´æ°é®å±æ§ã尽管å符串ä¹ç±»ä¼¼äºæ°ç»ï¼ä½è¿ç§æ¹æ³ä¸éç¨äºå®ï¼å 为å符串æ¯ä¸å¯åçã
示ä¾
>å¨ç´¢å¼ 2 å¤ç§»é¤ 0 个å ç´ ï¼å¹¶æå ¥âdrumâ
const myFish = ["angel", "clown", "mandarin", "sturgeon"];
const removed = myFish.splice(2, 0, "drum");
// myFish æ¯ ["angel", "clown", "drum", "mandarin", "sturgeon"]
// removed æ¯ []ï¼æ²¡æç§»é¤çå
ç´
å¨ç´¢å¼ 2 å¤ç§»é¤ 0 个å ç´ ï¼å¹¶æå ¥âdrumâåâguitarâ
const myFish = ["angel", "clown", "mandarin", "sturgeon"];
const removed = myFish.splice(2, 0, "drum", "guitar");
// myFish æ¯ ["angel", "clown", "drum", "guitar", "mandarin", "sturgeon"]
// removed æ¯ []ï¼æ²¡æç§»é¤çå
ç´
å¨ç´¢å¼ 0 å¤ç§»é¤ 0 个å ç´ ï¼å¹¶æå ¥âangelâ
splice(0, 0, ...elements) å unshift() 䏿 ·å¨æ°ç»çå¼å¤´æå
¥å
ç´ ã
const myFish = ["clown", "mandarin", "sturgeon"];
const removed = myFish.splice(0, 0, "angel");
// myFish æ¯ ["angel", "clown", "mandarin", "sturgeon"]
// 没æç§»é¤çå
ç´
卿åä¸ä¸ªç´¢å¼å¤ç§»é¤ 0 个å ç´ ï¼å¹¶æå ¥âsturgeonâ
splice(array.length, 0, ...elements) å push() 䏿 ·å¨æ°ç»çæ«å°¾æå
¥å
ç´ ã
const myFish = ["angel", "clown", "mandarin"];
const removed = myFish.splice(myFish.length, 0, "sturgeon");
// myFish æ¯ ["angel", "clown", "mandarin", "sturgeon"]
// 没æç§»é¤çå
ç´
å¨ç´¢å¼ 3 å¤ç§»é¤ 1 个å ç´
const myFish = ["angel", "clown", "drum", "mandarin", "sturgeon"];
const removed = myFish.splice(3, 1);
// myFish æ¯ ["angel", "clown", "drum", "sturgeon"]
// removed æ¯ ["mandarin"]
å¨ç´¢å¼ 2 å¤ç§»é¤ 1 个å ç´ ï¼å¹¶æå ¥âtrumpetâ
const myFish = ["angel", "clown", "drum", "sturgeon"];
const removed = myFish.splice(2, 1, "trumpet");
// myFish æ¯ ["angel", "clown", "trumpet", "sturgeon"]
// removed æ¯ ["drum"]
ä»ç´¢å¼ 0 å¤ç§»é¤ 2 个å ç´ ï¼å¹¶æå ¥âparrotâãâanemoneâåâblueâ
const myFish = ["angel", "clown", "trumpet", "sturgeon"];
const removed = myFish.splice(0, 2, "parrot", "anemone", "blue");
// myFish æ¯ ["parrot", "anemone", "blue", "trumpet", "sturgeon"]
// removed æ¯ ["angel", "clown"]
ä»ç´¢å¼ 2 å¤å¼å§ç§»é¤ 2 个å ç´
const myFish = ["parrot", "anemone", "blue", "trumpet", "sturgeon"];
const removed = myFish.splice(2, 2);
// myFish æ¯ ["parrot", "anemone", "sturgeon"]
// removed æ¯ ["blue", "trumpet"]
å¨ç´¢å¼ -2 å¤ç§»é¤ 1 个å ç´
const myFish = ["angel", "clown", "mandarin", "sturgeon"];
const removed = myFish.splice(-2, 1);
// myFish æ¯ ["angel", "clown", "sturgeon"]
// removed æ¯ ["mandarin"]
å é¤ä»ç´¢å¼ 2 å¼å§çææå ç´
const myFish = ["angel", "clown", "mandarin", "sturgeon"];
const removed = myFish.splice(2);
// myFish æ¯ ["angel", "clown"]
// removed æ¯ ["mandarin", "sturgeon"]
å¨ç¨çæ°ç»ä¸ä½¿ç¨ splice()
splice() æ¹æ³ä¿çäºæ°ç»çç¨çæ§ã
const arr = [1, , 3, 4, , 6];
console.log(arr.splice(1, 2)); // [empty, 3]
console.log(arr); // [1, 4, empty, 6]
å¨éæ°ç»å¯¹è±¡ä¸ä½¿ç¨ splice()
splice() æ¹æ³è¯»å this ç length 屿§ãç¶åï¼å®æ ¹æ®éè¦æ´æ°æ´æ°é®å±æ§å length 屿§ã
const arrayLike = {
length: 3,
unrelated: "foo",
0: 5,
2: 4,
};
console.log(Array.prototype.splice.call(arrayLike, 0, 1, 2, 3));
// [ 5 ]
console.log(arrayLike);
// { '0': 2, '1': 3, '3': 4, length: 4, unrelated: 'foo' }
è§è
| Specification |
|---|
| ECMAScript® 2026 Language Specification > # sec-array.prototype.splice > |