JS函数popAndShift实现求助:交替使用.pop()与.shift()
解决popAndShift函数的问题
你的代码存在两个核心问题:
- 仅执行了一次
pop()和shift()操作,只能处理array2的前两个元素(末尾和开头),当array2长度大于2时,剩余元素无法被处理,这是第二个测试失败的直接原因。 - 最后一行
array1.push(RemoveE,RemoveB,array2)错误地将整个array2数组作为单个元素追加到array1末尾,而非继续处理剩余元素。
正确实现(使用循环处理所有元素):
function popAndShift() { console.log("First array: " + array1); console.log("Second array: " + array2); // 循环处理array2,直到所有元素被移除 while (array2.length > 0) { // 先执行pop()取末尾元素 if (array2.length > 0) { const poppedItem = array2.pop(); array1.push(poppedItem); } // 再执行shift()取开头元素,需判断数组是否还有元素 if (array2.length > 0) { const shiftedItem = array2.shift(); array1.push(shiftedItem); } } console.log("Resulting array:" + array1); }
代码说明:
- 用
while循环持续执行操作,直到array2为空,确保所有元素都被处理。 - 每次循环先执行
pop(),再判断array2是否还有剩余元素,有则执行shift(),避免当array2只剩最后一个元素时,pop()后为空,shift()返回undefined的问题。 - 每次仅将移除的单个元素追加到
array1,而非整个数组。
内容的提问来源于stack exchange,提问作者H. Ach
相关产品推荐
相关产品推荐

