Javascript 反向数组不包含所有元素
为什么我的函数只返回[3,2,]。它也应该打印出元素1Javascript 反向数组不包含所有元素,javascript,web,computer-science,Javascript,Web,Computer Science,为什么我的函数只返回[3,2,]。它也应该打印出元素1 function reverseArr(arr) { var reverse = []; for (var i = 0; i < arr.length; i++) reverse.push(arr.pop()); return reverse; } console.log(reverseArr([1, 2, 3])); 功能反转器(arr){ var反向=[]; 对于(变量i=0;i
function reverseArr(arr) {
var reverse = [];
for (var i = 0; i < arr.length; i++)
reverse.push(arr.pop());
return reverse;
}
console.log(reverseArr([1, 2, 3]));
功能反转器(arr){
var反向=[];
对于(变量i=0;i
因为每次迭代都在修改arr
,arr.length
在变化。请尝试以下方法:
function reverseArr(arr) {
var reverse = [], len = arr.length;
for (var i = 0; i < len; i++)
reverse.push(arr.pop());
return reverse;
}
或者,您可以使用和的组合返回输入数组的新的反向副本,而无需修改原始副本:
function reverseArr(arr) {
return arr.slice().reverse();
}
问题是,当你弹出数组时,你正在改变数组的长度。所以
arr.length
从3开始,然后是2,然后是1。相反,您可以这样做:
function reverseArr(arr) {
var reverse = [];
while (arr.length) {
reverse.push(arr.pop());
}
return reverse;
}
或
或
功能反转器(arr){
var反向=[];
对于(变量i=0;i
或者干脆arr.reverse()。
function reverseArr(arr) {
var reverse = [];
while (arr.length) {
reverse.push(arr.pop());
}
return reverse;
}
function reverseArr(arr) {
var reverse = [];
while (arr.length > 0)
reverse.push(arr.pop());
return reverse;
}
function reverseArr(arr) {
var reverse = [];
for (var i = 0; i < arr.length; i++)
reverse.push(arr[arr.length - 1 - i]);
return reverse;
}