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

JS删除栈中间元素函数返回undefined问题排查与修正

修正删除栈中间元素的代码

问题原因

你的deleteMid函数没有返回处理后的栈,所以调用后console.log输出undefined。虽然remove函数已经通过引用修改了原数组,但deleteMid本身没有返回值,导致打印结果为空。

修正后的代码

function deleteMid(s, sizeOfs) {
    let count = 0;
    let mid = Math.floor(sizeOfs / 2);
    remove(s, count, mid, sizeOfs);
    return s; // 返回处理后的栈
}

function remove(s, count, mid, sizeOfs) {
    if (count === mid) {
        s.pop();
        return;
    }

    let num = s.pop();
    remove(s, count + 1, mid, sizeOfs);
    s.push(num);
}

console.log(deleteMid([1, 2, 3, 4, 5], 5)); // 输出 [1, 2, 4, 5]

关键修改说明

  • 在deleteMid函数末尾添加return s,让函数返回修改后的栈,这样console.log就能输出正确结果。
  • 原remove函数的递归逻辑是正确的:通过逐个弹出栈元素,到达中间位置时移除该元素,再将其余元素重新压入栈,实现删除中间元素的核心功能。

内容的提问来源于stack exchange,提问作者Sougata Mukherjee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 14:37:37