Javascript 代码打印数字,直到3时';它应该打印到5点

Javascript 代码打印数字,直到3时';它应该打印到5点,javascript,arrays,Javascript,Arrays,这个代码只打印数字到3,而它应该打印数字到5,怎么了 function reversingwithout (array){ for(var i=0;i<array.length;i++){ var old = array.shift(array[i]) console.log(old); } } var hh = [1,2,3,4,5]; reversingwithout(hh); 函数反转不带(数组){ 对于(var i=0;i这是因为

这个代码只打印数字到3,而它应该打印数字到5,怎么了

function reversingwithout (array){
    for(var i=0;i<array.length;i++){
        var old = array.shift(array[i])
        console.log(old);
    }
}

var hh = [1,2,3,4,5];
reversingwithout(hh);
函数反转不带(数组){

对于(var i=0;i这是因为
array.shift
操作正在改变循环中的数组

:

方法从数组中删除第一个元素并返回 此方法更改数组的长度

请尝试事先将数组长度保存在变量中:

var hh = [1,2,3,4,5];
var length = hh.length;
function reversingwithout (array){
    for(var i=0;i<length;i++){
        var old = array.shift()
        console.log(old);
    }
}

reversingwithout(hh);
var hh=[1,2,3,4,5];
变量长度=hh.length;
函数反转不带(数组){

对于(var i=0;i请参见循环条件在迭代中的演变:

  • i==0
    array.length==5
    。确定
  • i==1
    array.length==4
    。确定
  • i==2
    array.length==3
    。好的
  • i==3
    array.length==2
    。结束循环
  • 我想你误解了shift
    。如果你只想打印所有项目,只需执行以下操作

    for(var i=0; i<array.length; ++i) console.log(array[i]);
    
    (变量i=0;i)的
    
    方法从数组中删除第一个元素并返回该元素。此方法更改数组的长度

    每次检查循环保护时都会计算
    array.length
    的值。调用
    array.shift()
    时,循环体会从数组中删除一个元素,从而减少数组的长度。因此,在循环退出时,
    i==3
    array.length==2

    您可以通过将
    array.length
    的初始值存储在变量中并在循环保护中使用该变量来解决此问题

    e、 g

    var len=array.length;
    对于(var i=0;i
    Array.prototype.shift
    不接受任何参数。提示:使用
    shift()
    方法时正在从数组中删除元素。
    var len = array.length;
    for (var i = 0; i < len; i++) { ...