javascript - 在 JavaScript 中遍历数组时的奇怪行为

标签 javascript arrays

我正在通读 Eloquent Javascript 并面对其中一个练习,我发现了一个相当奇怪的行为。 (至少对我而言)

练习要求创建一个函数来反转数组。我想我可以遍历数组,每次从原始数组中弹出一个项目并将其插入一个最终将被返回的临时数组。 但是当我使用 for-of 循​​环或典型的顺序循环遍历数组时,不会传输最后一项。

谁能告诉我到底发生了什么?

const reverseArray = function(array) {
let rev = [];
for (let x = 0; x <= array.length; x++) {

    rev.push(array.pop());
    console.log(rev, array)
}
return rev;
};


console.log(reverseArray(["A", "B", "C"]));

输出:

["C"] ["A", "B"]
["C", "B"] ["A"]
["C", "B"]

最佳答案

pop() 应用于 array 时,它会减少 array 的长度,因此当循环运行时,它会发现一项少于前一个数组长度。因此,您可以做的只是将 array 的长度分配给一个变量,并在 for 循环的比较中使用它:

let rev = [];
const reverseArray = function(array) {
var length = array.length;
for (let x = 0; x < length; x++) {
  rev.push(array.pop());
}
return rev;
};


console.log(reverseArray(["A", "B", "C"]));

关于javascript - 在 JavaScript 中遍历数组时的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49334459/

相关文章:

javascript - 使用嵌套的 Promise 创建 Promise 队列

c++ - CUDA蛮力乐趣

java - 为什么我的程序的输出总是以两个连续的零开头,即使我编写的代码不产生零或重复的数字?

c - 为什么字符串数组的最后一个索引在 C 中不打印任何内容?

PHP 非法数组键类型警告 (PHPStorm)

arrays - PowerShell替换数组中的值

javascript - Ember.js:操作冒泡到错误的路线

javascript - 叠加菜单落后于标题

javascript - 对文档中的所有元素使用函数

javascript - 如何模糊div?