shift()
方法从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。
这份交互测试源码存储在Github仓库中。如果你想为这份交互测试源码做贡献, 请克隆 https://github.com/mdn/interactive-examples 同时提交一个pull request.
语法
arr.shift()
返回值
从数组中删除的元素; 如果数组为空则返回undefined
。
描述
shift
方法移除索引为 0 的元素(即第一个元素),并返回被移除的元素,其他元素的索引值随之减 1。如果 undefined
。
shift
方法并不局限于数组:这个方法能够通过 apply
方法作用于类似数组的对象上。但是对于没有 length 属性(从0开始的一系列连续的数字属性的最后一个)的对象,调用该方法可能没有任何意义。
Array.prototype.pop()
有着和 shift
相似的行为, 但是是作用在数组的最后一个元素上的。
示例
移除数组中的一个元素
以下代码显示了删除其第一个元素之前和之后的myFish数组。它还显示已删除的元素:
let myFish = ['angel', 'clown', 'mandarin', 'surgeon']; console.log('调用 shift 之前: ' + myFish); // "调用 shift 之前: angel,clown,mandarin,surgeon" var shifted = myFish.shift(); console.log('调用 shift 之后: ' + myFish); // "调用 shift 之后: clown,mandarin,surgeon" console.log('被删除的元素: ' + shifted); // "被删除的元素: angel"
var myFish = ['angel', 'clown', 'mandarin', 'surgeon'];
console.log('myFish before:', JSON.stringify(myFish));
// myFish before: ['angel', 'clown', 'mandarin', 'surgeon']
var shifted = myFish.shift();
console.log('myFish after:', myFish);
// myFish after: ['clown', 'mandarin', 'surgeon']
console.log('Removed this element:', shifted);
// Removed this element: angel
在while循环中使用shift()
shift() 方法经常用于while loop的环境中.。下例中每个循环将要从一个数组中移除下一项元素,直至它成为空数组。
var names = ["Andrew", "Edward", "Paul", "Chris" ,"John"];
while( (i = names.shift()) !== undefined ) {
console.log(i);
}
// Andrew, Edward, Paul, Chris, John
规范
规范 | 状态 | 备注 |
---|---|---|
ECMAScript 3rd Edition (ECMA-262) | Standard | Initial definition. Implemented in JavaScript 1.2. |
ECMAScript 5.1 (ECMA-262) Array.prototype.shift |
Standard | |
ECMAScript 2015 (6th Edition, ECMA-262) Array.prototype.shift |
Standard | |
ECMAScript Latest Draft (ECMA-262) Array.prototype.shift |
Draft |
浏览器支持
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out
https://github.com/mdn/browser-compat-data and send us a pull request.
Update compatibility data on GitHub
Desktop | Mobile | Server | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
shift |
Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | IE Full support 5.5 | Opera Full support Yes | Safari Full support Yes | WebView Android Full support Yes | Chrome Android Full support 18 | Firefox Android Full support 4 | Opera Android Full support Yes | Safari iOS Full support Yes | Samsung Internet Android Full support Yes | nodejs Full support Yes |
Legend
- Full support
- Full support