Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反向数组,循环中的pop方法未弹出完成_Javascript_Arrays_Methods - Fatal编程技术网

Javascript 反向数组,循环中的pop方法未弹出完成

Javascript 反向数组,循环中的pop方法未弹出完成,javascript,arrays,methods,Javascript,Arrays,Methods,注意:我已经看了几个小时的代码了,现在我开始质疑每个单词的拼写,或者怀疑我是否有诵读困难症——我知道这是一个简单的问题 我希望编写一个基本函数(不使用标准的JavaScriptreverse方法),该函数给定一个数组,以相反的顺序创建一个具有相同值的新数组 为什么这个函数写为“C”和“B”,而不是“A” 功能反转阵列(arr){ var reversedArr=[]; 对于(变量i=0;i=0;i--)。正如Martin所说,在代码中,您应该保存初始arr.length值并使用它。另外,pop没

注意:我已经看了几个小时的代码了,现在我开始质疑每个单词的拼写,或者怀疑我是否有诵读困难症——我知道这是一个简单的问题

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

为什么这个函数写为“C”和“B”,而不是“A”

功能反转阵列(arr){
var reversedArr=[];
对于(变量i=0;i
这应该记录[“C”、“B”、“A”],不管它是如何记录的→ [“C”,“B”]并且当我在函数中记录arr时,它保持在“A”上

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


我错过了什么

当您在数组中执行弹出操作时,它将永久性地从数组中取出该项并更改其长度。看

因此,在您的代码中,您应该使用

var popped = arr[i];
并按照以下步骤进行反向迭代:

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

当你在数组上做一个pop时,它将永久性地从数组中取出该项并改变它的长度。看

因此,在您的代码中,您应该使用

var popped = arr[i];
并按照以下步骤进行反向迭代:

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

function reverseArray(arr) {
  var reversedArr = [];
  while (arr.length > 0) {
    reversedArr.push(arr.pop())
  }
  return reversedArr;
}
这是怎么回事

pop
不接受参数,只删除最后一个元素,无需跟踪索引。继续这样做,直到数组为空

试试这个

function reverseArray(arr) {
  var reversedArr = [];
  while (arr.length > 0) {
    reversedArr.push(arr.pop())
  }
  return reversedArr;
}
这是怎么回事


pop
不接受参数,只删除最后一个元素,无需跟踪索引。继续这样做,直到数组为空

当您调用
pop(i)
时,您正在从数组中删除一个元素,因此,长度变为2。您可以使用
arr[i]
复制值,从
arr.length-1
开始复制到0。您也可以将
for
循环更改为从
arr.length
0
,然后在循环时推动元素
for(var i=arr.length-1;i>=0;i--)
。正如Martin所说,在代码中,您应该保存初始arr.length值并使用它。另外,
pop
没有任何参数调用
pop(i)
时,从数组中删除一个元素,因此长度变为2。您可以使用
arr[i]
复制值,从
arr.length-1
开始复制到0。您也可以将
for
循环更改为从
arr.length
0
,然后在循环时推动元素
for(var i=arr.length-1;i>=0;i--)
。正如Martin所说,在代码中,您应该保存初始arr.length值并使用它。还有,
pop
没有任何论据谢谢!回答问题并在我所问的上下文中提供修复!非常感谢。回答问题并在我所问的上下文中提供修复!