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

JavaScript中slice方法有什么替代方案?计算器数组运算场景适用

问题修复方案

问题根源

  • 左侧查找循环终止条件为j > 0,遗漏索引为0的数字
  • 右侧边界判断逻辑错误,当数字在数组末尾时,结束索引设置不对导致slice无法取到最后一位
  • 两次直接给newArray赋值,覆盖了左侧提取的数字,没有做合并

修复后的代码

var array = ['7', '3', '+', '6', 'x', '8', '+', '5', '4', 'x', '2'];

// 遍历查找乘号
for (var i = 0; i < array.length; i++) {
    if (array[i] == 'x') {
        var newArray = [];
        let j;
        // 向左查找最近的非数字位置
        for (j = i - 1; j >= 0; --j) {
            if (isNaN(array[j])) {
                break;
            }
        }
        // 向右查找最近的非数字位置
        let e;
        for (e = i + 1; e < array.length; e++) {
            if (isNaN(array[e])) {
                break;
            }
        }
        // 处理右侧是数组末尾的情况
        if (e == array.length - 1 && !isNaN(array[e])) {
            e = array.length;
        }
        // 合并左右两侧的数字
        const leftNum = array.slice(j + 1, i);
        const rightNum = array.slice(i + 1, e);
        newArray = newArray.concat(leftNum, rightNum);
        
        console.log('乘号位置:', i);
        console.log('左侧数字:', leftNum);
        console.log('右侧数字:', rightNum);
        console.log('合并结果:', newArray);
    }
}

运行效果说明

以你提供的测试数组为例,运行后会输出:

  • 第一个乘号(索引4):左侧提取到['6'],右侧提取到['8']
  • 第二个乘号(索引9):左侧提取到['5','4'],右侧提取到['2']
    所有单数字、多数字场景都可以正常提取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:54:05