gpt4 book ai didi

javascript - 反转数组,循环中的 pop 方法未弹出完成

转载 作者:行者123 更新时间:2023-12-02 13:46:04 26 4
gpt4 key购买 nike

注意:我已经研究了几个小时的代码,现在我开始质疑每个单词的拼写,或者想知道我是否患有阅读障碍 - 我知道这是一个简单的问题

我希望编写一个基本函数(不使用标准 JavaScript reverse 方法),该函数给定一个数组,以相反的顺序创建一个具有相同值的新数组。

为什么这个函数会弹出“C”和“B”,而不是“A”?

function reverseArray(arr) {
var reversedArr = [];
for (var i = 0; i < arr.length; i++) {
var popped = arr.pop(i);
reversedArr.push(popped);
}
return reversedArr;
}

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

这应该记录[“C”,“B”,“A”],但是它正在记录→[“C”,“B”],当我在函数中记录arr时,它会保留“A”。

我通过添加 reversedArr.push(arr.pop(arr[0])); 解决了这个问题在 for 循环之后和修复问题的 return 语句之前,但是如果将 for 循环编写为在 i 小于数组长度时继续,并且当数组仅包含“A”时,长度为 1,并且 i 为 0 ,不应该也弹出“A”吗?

我在这里缺少什么?

最佳答案

当您对数组执行弹出操作时,它将永久将该项目从数组中取出并更改其长度。请参阅here

所以,在你的代码中你应该使用

var popped = arr[i];

并进行反向迭代,如下所示:

for (var i = arr.length -1; i>=0 ; i--)

关于javascript - 反转数组,循环中的 pop 方法未弹出完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41386426/

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