目前为止,我们已经学习了如何给数组的开始和结尾位置添加元素。下面我们来看一下怎样从数组中删除元素。
要删除数组里最靠后的元素,可以用pop
方法:
numbers.pop;
通过
push
和pop
方法,就能用数组来模拟栈,你将会在下一章看到这部分内容。
现在,数组输出的数字是-4到12,并且数组的长度是17。
从数组首位删除元素
如果要移除数组里的第一个元素,可以用下面的代码:
for (var i = 0; i < numbers.length; i++){ numbers[i] = numbers[i+1];}
下面这张图呈现了这段代码的执行过程:
我们把数组里所有的元素都左移了一位。但数组的长度依然是17,这意味着数组中有额外的一个元素(值是undefined
)。在最后一次循环里,i + 1
引用了一个数组里还未初始化的位置。在Java、C/C+或C#等一些语言里,这样写可能就会抛出异常了,因此不得不在 numbers.length - 1
处停止循环。
可以看到,我们只是把数组第一位的值用第二位覆盖了,并没有删除元素(因为数组的长度和之前还是一样的,并且了多一个未定义元素)。
使用shift
方法
要确实删除数组的第一个元素,可以用shift
方法实现:
numbers.shift;
那么,假如本来数组中的值是从-4到12,长度为17,执行了上述代码后,数组就只有-3到12了,并且长度也会减小到16。
通过
shift
和unshift
方法,就能用数组模拟基本的队列数据结构,第4章里会讲到。