我想反转输入到函数中的数组。
但是由于某种原因,控制台返回了数组的第一个值,而不是在while循环内获取完整的数组,因此它可以将值从末尾移到最前面,然后删除相同的值。
function littleWHEW(lemonade) {
let i = lemonade.length - 1;
while (i >= 0) {
lemonade.unshift(lemonade[i])
lemonade.pop(lemonade[i])
i = i - 1
}
return lemonade
}
console.info(littleWHEW([1,2,3,4,5]))
最佳答案
自从您要求解释以来,让我们进行深入调查。在开始之前,请先看一下unshift
和pop
首先i = 4
。这是一个循环中发生的事情:[1,2,3,4,5]
是原始数组。 lemonade.unshift(lemonade[i])
将一个元素添加到lemonade
的第一位置。此时,i = 4
就是lemonade[4] = 5
,我们有[5,1,2,3,4,5]
(注意粗体)。
现在您pop
最后一个。 [5,1,2,3,4,5]
变为[5,1,2,3,4]
。
您减少i
。
现在i = 3
,这是第二个循环中发生的情况:[5,1,2,3,4]
是原始数组。 lemonade.unshift(lemonade[i])
将一个元素添加到lemonade
的第一位置。此时,i = 3
就是lemonade[3] = 3
,我们有[3,5,1,2,3,4]
(注意粗体)。
现在您pop
最后一个。 [3,5,1,2,3,4]
变为[3,5,1,2,3]
。
您减少i
。
在一个循环之后,您的i
不会按预期指向最后一个元素,并且使事情出错(如第二个循环那样)。