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() 㯠Array ã¤ã³ã¹ã¿ã³ã¹ã®ã¡ã½ããã§ããã®å ´ (in-place) ã§æ¢åã®è¦ç´ ãåãé¤ããããç½®ãæããããæ°ããè¦ç´ ã追å ããããããã¨ã§ãé
åã®å
容ã夿´ãã¾ãã
å
ã®é
åã夿´ããã«ãããé¨åãé¤å»ãããç½®ãæãããããæ°ããé
åã使ããã«ã¯ toSpliced() ã使ç¨ãã¦ãã ãããé
åã夿´ããã«é
åã®ä¸é¨ã«ã¢ã¯ã»ã¹ããã«ã¯ slice() ãåç
§ãã¦ãã ããã
試ãã¦ã¿ã¾ããã
const months = ["Jan", "March", "April", "June"];
months.splice(1, 0, "Feb");
// ã¤ã³ããã¯ã¹ 1 ã«æ¿å
¥
console.log(months);
// äºæ³ãããçµæ: Array ["Jan", "Feb", "March", "April", "June"]
months.splice(4, 1, "May");
// ã¤ã³ããã¯ã¹ 4 ã®è¦ç´ 1 ã¤ãç½®æ
console.log(months);
// äºæ³ãããçµæ: 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-
é åã®å¤æ´ãå§ããä½ç½®ã®ã¼ãããå§ã¾ãã¤ã³ããã¯ã¹ã§ãæ´æ°ã«å¤æããã¾ãã
- ã¤ã³ããã¯ã¹ãè² ã®å ´åãé
åã®æ«å°¾ããããã®ã¼ã£ã¦æ°ãã¾ãã
start < 0ã®å ´åãstart + array.lengthã使ç¨ããã¾ãã start < -array.lengthã®å ´åã¯0ã使ç¨ããã¾ããstart >= array.lengthã®å ´åãè¦ç´ ã¯åé¤ããã¾ããããã¡ã½ããã¯è¿½å 颿°ã¨ãã¦åä½ããæå®ãããæ°ã ãè¦ç´ ã追å ãã¾ããstartãçç¥ãããå ´åï¼ããã¦splice()ã弿°ãªãã§å¼ã³åºãããå ´åï¼ãä½ãåé¤ããã¾ãããããã¯undefinedãæ¸¡ãã¨0ã«å¤æãããã®ã¨ã¯ç°ãªãã¾ãã
- ã¤ã³ããã¯ã¹ãè² ã®å ´åãé
åã®æ«å°¾ããããã®ã¼ã£ã¦æ°ãã¾ãã
deleteCountçç¥å¯-
é åã®
startã®ä½ç½®ããåãé¤ãå¤ãè¦ç´ ã®åæ°ãç¤ºãæ´æ°ã§ããdeleteCountãçç¥ãããå ´åãã¾ãã¯deleteCountã®å¤ãstartã§æå®ããä½ç½®ããå¾ã®è¦ç´ æ°ä»¥ä¸ã®å ´åãstartããé åã®æ«å°¾ã¾ã§ã®ãã¹ã¦ã®è¦ç´ ãåé¤ããã¾ãããã ããä»»æã®itemN弿°ã渡ãããå ´åã¯ãstartããå¾ã®è¦ç´ ããã¹ã¦åé¤ããããã«deleteCountã¨ãã¦Infinityãæ¸¡ãå¿ è¦ãããã¾ããæç¤ºçã«undefinedãæ¸¡ãã¨ã夿ããã¦0ã«ãªãããã§ããdeleteCountã0ã¾ãã¯è² ã®æ°ã®å ´åãã©ã®è¦ç´ ãåãé¤ããã¾ããããã®å ´åãå°ãªãã¨ã 1 ã¤ã®æ°ããè¦ç´ ãæå®ããå¿ è¦ãããã¾ãï¼ä»¥ä¸åç §ï¼ã item1, â¦,itemNçç¥å¯-
é åã«è¿½å ããè¦ç´ ã§ã
startããå§ã¾ãã¾ããè¦ç´ ãæå®ããªãã£ãå ´åã
splice()ã¯åã«é åããè¦ç´ ãåãé¤ãã¾ãã
è¿å¤
åãé¤ãããè¦ç´ ãå«ãé åã§ãã
è¦ç´ ã 1 ã¤ã ãåãé¤ãããå ´åã¯ãè¦ç´ æ° 1 ã®é åãè¿ããã¾ãã
è¦ç´ ãåãé¤ãããªãã£ãå ´åã空ã®é åãè¿ããã¾ãã
解説
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"]</pre>
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® 2027 Language Specification> # sec-array.prototype.splice> |