我现在正在用javascript练习一些方法,比如shift(), unshift(), push(), pop()
,我想写一个小函数,它需要3个参数,一个数组,一个起点,一个终点。它用于切出数组的一部分,然后返回新数组和切出的部分。没什么用也没什么大不了的,只是想练习一下javascript。
但是我遇到了一个奇怪的事情,我不知道为什么。
这是奇怪的部分
var a1 = [];
var a2 = [9,8,7,6,5,4,3,2,1];
for(var i=0; i<a2.length; i++){
a1.unshift(a2.shift())
}
所以我写了这段代码,预期的结果应该是
a1 = [1,2,4,5,6,7,8,9]
a2 = []
但是,当我运行代码时,这就是实际发生的情况
a1 = [5,6,7,8,9]
a2 = [4,3,2,1]
似乎函数循环的时间不够,所以我尝试将 a2.length 更改为整数:9
这使代码成为
var a1 = [];
var a2 = [9,8,7,6,5,4,3,2,1];
for(var i=0; i<9; i++){
a1.unshift(a2.shift())
}
那行得通!
然后我改变了这个方法
var a1 = [];
var a2 = [9,8,7,6,5,4,3,2,1]
var aLength = a2.length;
for(var i=0; i<aLength; i++){
a1.unshift(a2.shift())
}
这也有效!
谁能告诉我这是为什么???以及如何改进循环?
非常感谢,非常感谢您的宝贵时间。