You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 15:22:48