gpt4 book ai didi

javascript - 使用 for 循环反转数组

转载 作者:行者123 更新时间:2023-11-29 17:44:31 25 4
gpt4 key购买 nike

快速 JavScript 问题。在下面的代码片段中,我正在反转传递给函数 reverseArray 的数组 arr

在第一段代码中,看起来局部变量 arr 一直在变化,即使在循环中我正在对变量 newArr 进行操作,它保存了初始值arr 的值。因此,当 arr.length 达到值 3 时,循环失败。

function reverseArray (arr) {
var newArr = [];
var inArr = arr;
console.log(inArr);
for (i = 0; i < arr.length; i++) {
newArr[i] = inArr.pop(i);
}
return newArr;
}
reverseArray(["A", "B", "C", "D", "E", "F"]);

// OUTPUT: ["F", "D", "E"]

另一方面,如果我将 arr.length 存储在局部变量 numArr 上,那么它会完美地工作并反转数组。

function reverseArray (arr) {
var numArr = arr.length;
var newArr = [];
for (i = 0; i < numArr; i++) {
let inArr = arr;
newArr[i] = inArr.pop(i);
}
return newArr;
}

reverseArray(["A", "B", "C", "D", "E", "F"]);

// OUTPUT: ["F", "E", "D", "C", "B", "A"]

我错过了什么?

最佳答案

您可以复制数组并使用副本的长度来检查下一个 pop/push 命令。

function reverseArray(array) {
var newArr = [],
inArr = array.slice(); // take copy of primitive values

while (inArr.length) { // check decrementing length
newArr.push(inArr.pop());
}
return newArr;
}

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

要满足条件,您也可以使用 for 语句。

function reverseArray(array) {
var newArr = [],
inArr = array.slice(); // take copy of primitive values

for(; inArr.length; ) { // check decrementing length
newArr.push(inArr.pop());
}
return newArr;
}

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

关于javascript - 使用 for 循环反转数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50999847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com