为什么这个反向函数不起作用
Why this reverse function isn't working?
为什么这不起作用?我不想使用任何其他变量来使其工作,也不想使用内置函数,只是问为什么这不起作用?
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()
函数。拥有另一个变量并在其中添加临时内容并没有错。
解决 方案:
使用临时数组:
function reverse(arr) {
var final = [];
for (var i = arr.length - 1; i >= 0; i--) {
final.push(arr[i]);
}
return final;
}
使用内置函数 (
Array.prototype.reverse()
):
function reverse(arr) {
return arr.reverse();
}
使用少量临时变量:
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));
> 您将耗尽内存。 您正在做的是将该数组的最后一个元素无限添加到数组的末尾。每次你打电话arr.push(...)
你都会arr.length
增加一。 您的 for 循环将永远无法完成,因为i
永远不会少于 arr.length
我不想使用任何其他变量来使其工作,也不想使用内置函数
你不能。
对结果使用临时数组
function reverse(arr) {
var res = []
for (var i = arr.length - 1; i > -1; i--) {
res.push(arr[i]);
}
return res;
}
相关文章:
- Ember Data DS.Model's set函数不起作用
- 为什么我的JavaScript堆栈排序函数不起作用
- Javascript onchange()函数不起作用
- 另一个Ajax函数触发的Ajax函数不起作用
- 从PHP调用JS函数不起作用
- jQuery validate函数不起作用
- JS-窗口宽度函数不起作用
- javascript函数,该函数不起作用,但不会显示任何错误
- 为什么这个排序函数不起作用
- 为什么这个反向函数不起作用
- Javascript parseInt 函数不起作用
- 我的函数不起作用,Ajax调用,JQuery,调用外部?我不知道
- 主干构造函数不起作用
- Javascript:this.value 函数不起作用
- Mocha 的 beforeEach() 和 done() 函数不起作用
- 在jQuery中,我的函数不起作用
- jquery-ui-rails的draggable和dropable函数不起作用
- 数学函数不起作用
- Javascript-创建打印到HTML的函数不起作用
- 我上传了客户's服务器一个js函数不起作用