javascript - javascript新手,使用数组

标签 javascript arrays reversing

想知道为什么我需要在数组长度上添加 4 以便它反向打印整个数组?

在我添加 4 之前,它只是使用 .length 属性,并且只打印出 6543。

提前致谢!

function reverseArray(array) {
    var newArray =[];

     for(var i = 0; i <= array.length+4; i++) {
         newArray += array.pop(i);
      }
     return newArray;
 }
var numbers = [1,2,3,4,5,6];
console.log(reverseArray(numbers));

最佳答案

array.pop 删除(并返回)最后一个元素。这会影响数组的长度。每次迭代时都会检查长度,因此由于数组每次都在变短,因此循环提前结束。

您可以创建一个循环并弹出项目,直到它为空,但要考虑的另一件事是,它是您要更改的原始数组。我认为像 reverseArray 这样的函数如果返回另一个数组,则不应更改传递给它的数组 numbers。因此,更好的解决方案是一个简单的循环,它可以迭代所有项目而不修改数组。

function reverseArray(array)
{
  var newArray =[];

  for (var i = array.length-1; i >= 0; i--) {
    newArray.push(array[i]);
  }
  return newArray;
}

var numbers = [1,2,3,4,5,6];
console.log(reverseArray(numbers));
console.log(numbers); // Should be unaltered.

如果您不介意修改数组,可以使用reverse()数组的方法:

var numbers = [1,2,3,4,5,6];
numbers.reverse();
console.log(numbers);

关于javascript - javascript新手,使用数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29352438/

相关文章:

javascript - JS : How to solve this [object Promise]?

arrays - 在单元格标签等于给定字符串的 collectionView 或 TableView 上选择行/部分?

javascript - 如何在对象数组中设置每个对象的属性?

c++ - 如何在没有 C++ 辅助方法的情况下反转句子中的单词?

Perl - 源代码的操作码?

javascript - ExtJS 列中的排序会从模板列中删除节点

javascript - 创建跟踪器后设置 Google Analytics 用户 ID

javascript - jquery tab ajax问题

c - 如何从c中的数组中删除一系列元素

c++ - 如何在 C++ 中通过内置的 reverse() 函数存储反转的字符串