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

JavaScript如何获取数组两数间区间值并按规则转换扁平化对象

数据处理逻辑实现方案

核心处理规则

  • 键名映射:原数据源Red节点映射为输出的Level字段,Blue映射为Basement字段,Black映射为Custom字段,所有节点保留原有Name属性,仅替换List为处理后结果
  • 区间类节点(Red、Blue)处理:遍历List下每个双元素数字字符串区间,将字符串转为数值后,补全区间包含两个端点在内的所有连续整数,所有值收集完成后统一去重
  • 普通节点(Black)处理:直接将嵌套的List数组做全层级扁平化,不做区间补全操作

可直接运行的实现代码

/**
 * 处理OriginalData生成符合要求的提交数据
 * @param {Object} originalData 原始数据源
 * @returns {Object} 处理完成的输出对象
 */
function submitData(originalData) {
  // 节点配置:映射输出键名、标记是否需要区间补全
  const nodeConfig = {
    Red: { targetKey: 'Level', fillRange: true },
    Blue: { targetKey: 'Basement', fillRange: true },
    Black: { targetKey: 'Custom', fillRange: false }
  }
  const output = {}

  for (const originKey in nodeConfig) {
    const { targetKey, fillRange } = nodeConfig[originKey]
    const sourceNode = originalData[originKey]
    let processedList = []

    if (fillRange) {
      // 补全区间连续值
      sourceNode.List.forEach(([startStr, endStr]) => {
        const start = Number(startStr)
        const end = Number(endStr)
        for (let val = start; val <= end; val++) {
          processedList.push(val)
        }
      })
      // 去重
      processedList = [...new Set(processedList)]
    } else {
      // 直接扁平化任意层级数组
      processedList = sourceNode.List.flat(Infinity)
    }

    output[targetKey] = {
      Name: sourceNode.Name,
      List: processedList
    }
  }

  return output
}

逻辑说明

  • 区间生成逻辑自动兼容字符串格式的数字端点,比如输入区间["10","13"]会输出10、11、12、13四个连续整数
  • 去重逻辑基于Set实现,性能优于遍历判断,不会保留重复值
  • 扁平化使用flat(Infinity),不管Black节点下的List嵌套多少层都能直接转为一维数组
  • 输出结构完全匹配要求,不会残留原有的Red/Blue/Black键名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 07:54:33