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

如何用JavaScript实现运算数组的数字合并转换?

解决方案

需求二:合并连续数字数组

针对将[3,3,'+',3]转换为[33,'+',3]的需求,可通过遍历数组合并连续数字实现:

function mergeConsecutiveNumbers(arr) {
  const result = [];
  let currentNum = '';
  
  for (const item of arr) {
    if (!isNaN(item)) {
      currentNum += item.toString();
    } else {
      if (currentNum) {
        result.push(Number(currentNum));
        currentNum = '';
      }
      result.push(item);
    }
  }
  
  if (currentNum) {
    result.push(Number(currentNum));
  }
  
  return result;
}

// 测试
const array1 = [3, 3, '+', 3];
const array2 = mergeConsecutiveNumbers(array1);
console.log(array2); // 输出 [33, '+', 3]

需求一:拆分带运算的元素并合并数字

针对将[3,'3+3']转换为[33,'+',3]的需求,需先拆分包含运算符的字符串元素,再调用上述合并函数:

function splitAndMerge(arr) {
  const tempArr = [];
  const opRegex = /(\d+)([\+\-\*\/])(\d+)/;
  
  for (const item of arr) {
    if (typeof item === 'string' && opRegex.test(item)) {
      const [_, num1, op, num2] = item.match(opRegex);
      tempArr.push(Number(num1), op, Number(num2));
    } else {
      tempArr.push(item);
    }
  }
  
  return mergeConsecutiveNumbers(tempArr);
}

// 测试
const inputArr = [3, '3+3'];
const outputArr = splitAndMerge(inputArr);
console.log(outputArr); // 输出 [33, '+', 3]

说明

  • mergeConsecutiveNumbers函数通过临时字符串收集连续数字,遇到运算符时将收集的数字转为数值存入结果数组,完成连续数字的合并。
  • splitAndMerge函数先使用正则匹配拆分类似"3+3"的字符串,提取数字和运算符,再调用合并函数处理连续数字,最终得到目标格式。
  • 正则/(\d+)([\+\-\*\/])(\d+)/支持加减乘除四种基础运算符,若需支持更多运算符,可扩展括号内的字符集。

内容的提问来源于stack exchange,提问作者Levente Tóth

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 20:01:02