这是我的代码:
我不理解为什么for循环中的条件不是
function reverseArray(array){
var newArray = [];
for (i = 0; i <= array.length + 1; i++)
newArray.unshift(array.shift());
return newArray;
};
我不理解为什么for循环中的条件不是
i < array.length
。例如,当数组有3个元素时,我认为你需要循环遍历数组3次,将每个元素移动到新数组中,但出于某种原因,当我尝试它(例如console.log(reverseArray(["a", "b", "c"]))
)时,我必须将它更改为当前的i <= array.length + 1;
才能得到正确的输出["c", "b", "a"]
。我不明白为什么,如果有人能够帮助解释为什么i < array.length
不起作用,我会非常感激。谢谢!
array.length
的值都不同,因为你正在对数组进行shift
操作。在循环之前将其值存入一个变量中,并将该变量用于条件中。顺便说一下,有一个名为reverse
的方法。 - Blackholevar v; while(v = a.shift()) b.unshift(v);
进行操作。 - levi