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

如何用JavaScript将TXT文件数据转为JSON并按日期和名称分组?

问题描述

我有如下格式的TXT文本数据:

[2023-01-28 17:54:59]Name John, Cart Iphone13
[2023-01-28 17:54:59]Name John, Cart Iphone14
[2023-01-28 17:54:59]Name John, Cart Iphone15
[2023-01-28 17:54:59]Name John, Cart Iphone16
[2023-01-28 18:24:29]Name Frank, Cart Android10
[2023-01-28 18:24:29]Name Frank, Cart Android11

需要用JavaScript将其转换为指定格式的JSON对象,按相同日期和名称分组,期望结果如下:

[
    {
        "date": "2023-01-28 17:54:59",
        "name": "John",
        "cart": [
            "Iphone13",
            "Iphone14",
            "Iphone15",
            "Iphone16"
        ]
    }, 
    {
        "date": "2023-01-28 18:24:29",
        "name": "Frank",
        "cart": [
            "Android10",
            "Android11"
        ]
    }
]
解决方案

可以通过正则解析每行数据+对象分组聚合的方式实现,具体代码如下:

// 模拟读取到的TXT文本内容
const txtData = `[2023-01-28 17:54:59]Name John, Cart Iphone13
[2023-01-28 17:54:59]Name John, Cart Iphone14
[2023-01-28 17:54:59]Name John, Cart Iphone15
[2023-01-28 17:54:59]Name John, Cart Iphone16
[2023-01-28 18:24:29]Name Frank, Cart Android10
[2023-01-28 18:24:29]Name Frank, Cart Android11`;

// 1. 按行分割文本,过滤空行
const lines = txtData.split('\n').filter(line => line.trim());

// 2. 正则表达式:匹配日期、名称、购物项
const regex = /\[([^\]]+)\]Name (\w+), Cart (\w+)/;

// 3. 用对象存储分组数据,键为"日期-名称"组合
const groupMap = {};

lines.forEach(line => {
    const match = line.match(regex);
    if (match) {
        const [_, date, name, item] = match;
        const key = `${date}-${name}`;
        
        if (!groupMap[key]) {
            groupMap[key] = { date, name, cart: [] };
        }
        groupMap[key].cart.push(item);
    }
});

// 4. 将对象值转为数组,得到最终结果
const result = Object.values(groupMap);

// 输出格式化后的JSON
console.log(JSON.stringify(result, null, 2));

代码说明

  • 文本分割:通过split('\n')拆分文本为单行数据,filter过滤空行避免无效解析。
  • 正则解析:正则表达式精准提取括号内的日期、Name后的用户名、Cart后的商品项。
  • 分组聚合:以“日期-名称”作为唯一键存入对象,避免重复分组;首次遇到分组时初始化结构,后续直接追加商品到cart数组。
  • 结果转换:Object.values(groupMap)将对象中的分组数据提取为数组,即符合要求的JSON结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 03:40:21