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
相关产品推荐
相关产品推荐

