为什么这不起作用? 附:我不想使用任何其他变量来使其工作,并且我不想使用内置函数,只是问为什么这不起作用?
function reverse(arr){
for(var i =0; i< arr.length; i++){
arr.push(arr[arr.length-i]);
}
return arr;
}
最佳答案
您的代码中有很多缺陷。
- 当您开始推送
arr.push(arr[arr.length-i]);
时,数组长度会增加,因此,您将无法获得数据的一致性。 - 这会进入无限循环,因为每次
arr
都会超出其长度。
最好使用另一个变量并反转,或者可以使用内置的 reverse()
函数。使用另一个变量并在其中添加临时内容并没有什么问题。
解决方案:
Using a temporary array:
function reverse(arr) {
var final = [];
for (var i = arr.length - 1; i >= 0; i--) {
final.push(arr[i]);
}
return final;
}
function reverse(arr) {
return arr.reverse();
}
Using few temporary variables:
a = [5,4,3,2,1];
function reverse(arr) {
var i = 0, j = arr.length - 1;
for (i = 0; i < j; i++, j--) {
var temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
return arr;
}
console.log(reverse(a));
关于javascript - 为什么这个反向功能不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36917423/