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

JavaScript如何将Array1按规则合并字母项转换为Array2

数组转换实现方案

核心逻辑

  • 首先定义两个判断规则:
    • 纯字母项:仅由大小写英文字母组成的字符串
    • 数字项:整数或带小数点的数字字符串
  • 遍历原始数组,维护一个临时变量存储当前连续拼接的纯字母串
  • 遇到纯字母项时,拼接到临时变量中
  • 遇到数字项时,先判断临时变量是否有值,有值就先推入结果数组再清空临时变量,再把当前数字项单独推入结果数组
  • 遍历结束后,检查临时变量是否还有剩余内容,有则推入结果数组

完整代码

// 原始输入数组Array1
const Array1 = [
  'CALX',  '11.10',  '21',
  '01',    '08',     'EGLD',
  'USDT',  'LDFDFC', 'ZONE',
  '238.5', '233',    'LEVERAGE',
  '3',     'X',      'TARGET',
  '1',     '243.9',  'TARGET',
  '2',     '248',    'TARGET',
  '3',     '254',    'TARGET',
  '4',     '260',    'H',
  'GD',    'S',      'AFCA'
]

// 转换函数
function transformArray(arr) {
  const result = []
  let letterBuffer = ''
  // 判断是否为纯字母项
  const isLetter = str => /^[A-Za-z]+$/.test(str)
  
  for (const item of arr) {
    if (isLetter(item)) {
      letterBuffer += item
    } else {
      // 遇到数字项先提交缓存的字母串
      if (letterBuffer) {
        result.push(letterBuffer)
        letterBuffer = ''
      }
      result.push(item)
    }
  }
  // 提交遍历结束后剩余的字母串
  if (letterBuffer) {
    result.push(letterBuffer)
  }
  return result
}

const Array2 = transformArray(Array1)
console.log(Array2)

补充说明

你提供的原始文本转Array1的代码存在笔误,const text = text.toUpperCase().match(...) 中的text应改为input,修正后代码如下:

const input = 'CALX, [11.10.21 01:08]  $EGLD/USDT  #Ldfdfc  zone : 238.5 - 233  "LEVERAGE" : 3x TARGET1 : 243.9 TARGET 2 : 248 TARGET 3 : 254 TARGET 4 : 260 h.gd.s afca. `~!@#$%^&*()_-+=-/?><'
const Array1 = input.toUpperCase().match(/[a-z]+|\d+(?:\.\d+)?/gi);

执行后得到的Array2完全匹配你给出的目标结构要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:45:05