Array.prototype.shift()
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æâ©.
shift() æ¹æ³ä»æ°ç»ä¸å é¤ç¬¬ä¸ä¸ªå
ç´ ï¼å¹¶è¿å该å
ç´ çå¼ãæ¤æ¹æ³æ´æ¹æ°ç»çé¿åº¦ã
å°è¯ä¸ä¸
const array1 = [1, 2, 3];
const firstElement = array1.shift();
console.log(array1);
// Expected output: Array [2, 3]
console.log(firstElement);
// Expected output: 1
è¯æ³
shift()
è¿åå¼
仿°ç»ä¸å é¤çå
ç´ ï¼å¦ææ°ç»ä¸ºç©ºåè¿å undefinedã
æè¿°
shift æ¹æ³ç§»é¤ç´¢å¼ä¸º 0 çå
ç´ ï¼å¹¶å°åç»å
ç´ ç䏿 便¬¡ååç§»å¨ï¼ç¶åè¿å被移é¤çå
ç´ ã妿 length 屿§çå¼ä¸º 0ï¼åè¿å undefinedã
pop() æ¹æ³æçå shift() ç¸ä¼¼çè¡ä¸ºã使¯æ¯ä½ç¨äºæ°ç»çæåä¸ä¸ªå
ç´ ä¸çã
shift() æ¹æ³æ¯ä¸ä¸ªæ¹åæ¹æ³ã宿¹åäº this çå
容åé¿åº¦ãå¦æä½ å¸æä¿æ this çå¼ä¸åï¼ä½è¿åä¸ä¸ªå é¤äºç¬¬ä¸ä¸ªå
ç´ çæ°æ°ç»ï¼ä½ å¯ä»¥ä½¿ç¨ arr.slice(1)ã
shift() æ¹æ³æ¯éç¨çãå®åªææ this å¼å
·æ length 屿§åæ´æ°é®å±æ§ãè½ç¶åç¬¦ä¸²ä¹æ¯ç±»ä¼¼æ°ç»çï¼ä½è¿ä¸ªæ¹æ³ä¸éååºç¨äºå®ä»¬ï¼å 为å符串æ¯ä¸å¯åçã
示ä¾
>ç§»é¤æ°ç»ä¸çä¸ä¸ªå ç´
以ä¸ä»£ç æ¾ç¤ºäºå é¤å
¶ç¬¬ä¸ä¸ªå
ç´ ä¹ååä¹åç myFish æ°ç»ãå®è¿æ¾ç¤ºå·²å é¤çå
ç´ ï¼
const myFish = ["angel", "clown", "mandarin", "surgeon"];
console.log("è°ç¨ shift ä¹åï¼", myFish);
// è°ç¨ shift ä¹åï¼ ['angel', 'clown', 'mandarin', 'surgeon']
const shifted = myFish.shift();
console.log("è°ç¨ shift ä¹åï¼", myFish);
// è°ç¨ shift ä¹åï¼ ['clown', 'mandarin', 'surgeon']
console.log("被å é¤çå
ç´ ï¼" + shifted);
// "被å é¤çå
ç´ ï¼angel"
å¨ while 循ç¯ä¸ä½¿ç¨ shift()
shift() æ¹æ³ç»å¸¸ç¨äº while 循ç¯çæ¡ä»¶ä¸ãä¸ä¾ä¸æ¯æ¬¡è¿ä»£é½ä¼ä»ä¸ä¸ªæ°ç»ä¸ç§»é¤ä¸ä¸é¡¹å ç´ ï¼ç´è³å®æä¸ºç©ºæ°ç»ã
const names = ["Andrew", "Tyrone", "Paul", "Maria", "Gayatri"];
while (typeof (i = names.shift()) !== "undefined") {
console.log(i);
}
// Andrew, Tyrone, Paul, Maria, Gayatri
å¨éæ°ç»å¯¹è±¡ä¸è°ç¨ shift()
shift æ¹æ³ä¼è¯»å this ç length 屿§ã妿è§èåé¿åº¦ä¸º 0ï¼length 忬¡è®¾ç½®ä¸º 0ï¼èä¹åå¯è½ä¸ºè´å¼æ undefinedï¼ãå¦åï¼è¿å 0 å¤ç屿§ï¼å
¶ä½å±æ§åå·¦ç§»å¨ 1ãlength 屿§éå 1ã
const arrayLike = {
length: 3,
unrelated: "foo",
2: 4,
};
console.log(Array.prototype.shift.call(arrayLike));
// undefinedï¼å ä¸ºå®æ¯ä¸ä¸ªç©ºæ§½
console.log(arrayLike);
// { '1': 4, length: 2, unrelated: 'foo' }
const plainObj = {};
// è¿é没æé¿åº¦å±æ§ï¼æä»¥é¿åº¦ä¸º 0
Array.prototype.shift.call(plainObj);
console.log(plainObj);
// { length: 0 }
è§è
| Specification |
|---|
| ECMAScript® 2026 Language Specification > # sec-array.prototype.shift > |