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

使用JavaScript将CSV转换为分组后含指标数组的JSON格式

解决方案:CSV转指定结构JSON的JavaScript实现

这里有一个可以直接运行的JavaScript代码片段,完美实现你需要的转换逻辑——按name和region组合分组,将年份与对应指标(人口、收入)组成嵌套数组:

function convertCsvToTargetJson(csvString) {
  // 1. 处理CSV字符串,分割成行并过滤空行
  const lines = csvString.split('\n').filter(line => line.trim() !== '');
  // 2. 提取表头并清理引号、空格
  const headers = lines[0].split(',').map(header => header.trim().replace(/"/g, ''));
  // 3. 初始化分组容器,用`name-region`作为唯一键避免重复
  const groups = {};

  // 4. 遍历数据行(跳过表头)
  for (let i = 1; i < lines.length; i++) {
    // 分割字段并清理引号、空格
    const fields = lines[i].split(',').map(field => field.trim().replace(/"/g, ''));
    // 提取并转换数据类型(CSV读出来的都是字符串,要转成数字)
    const name = fields[0];
    const region = fields[1];
    const year = Number(fields[2]);
    const population = Number(fields[3]);
    const income = Number(fields[4]);

    // 生成分组唯一键
    const groupKey = `${name}-${region}`;

    // 5. 如果分组不存在,先初始化基础结构
    if (!groups[groupKey]) {
      groups[groupKey] = {
        name,
        region,
        population: [],
        income: []
      };
    }

    // 6. 将年份与指标配对后加入对应数组
    groups[groupKey].population.push([year, population]);
    groups[groupKey].income.push([year, income]);
  }

  // 7. 将分组对象转换为数组,得到最终JSON结构
  return Object.values(groups);
}

// 测试用例:代入你提供的CSV数据
const csvData = `name, region, year, population, income
"USA", "America", 2000, 111, 444
"USA", "America", 2001, 222, 555
"USA", "America", 2002, 333, 666
"Germany", "Europe", 2000, 777, 888`;

const resultJson = convertCsvToTargetJson(csvData);
console.log(JSON.stringify(resultJson));

代码逻辑说明:

  • CSV解析:先把CSV字符串按行分割,过滤掉空行,再处理表头和数据字段,去除多余的引号和空格,避免格式干扰。
  • 分组策略:用name-region作为唯一键,确保同国家同地区的数据会被分到同一组,不会出现重复条目。
  • 数据类型转换:把CSV里的字符串类型年份、人口、收入转换为数字类型,保证最终JSON的数值格式符合预期。
  • 结构构建:每个分组初始化时创建对应字段,随后将[年份, 指标值]的数组推入对应字段,最后把分组对象转为数组得到目标结构。

运行这段代码后,你会得到完全符合预期的JSON输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:44:21