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

如何用JavaScript转换嵌套JSON,合并指定键值为数组?

解决方案

你可以通过嵌套使用Array.map()结合对象遍历的方式实现结构转换,核心逻辑是处理每个fotos子项的字段重组:

const originalData = [
    {
        "fotos": [
            {
                "foto": "foto 1",
                "zz0": "first line.",
                "zz1": "second line.",
                "zz2": "third line."
            },
            {
                "foto": "foto 2",
                "zz0": "first line."
            }
        ]
    }
];

const transformedData = originalData.map(item => ({
    fotos: item.fotos.map(photoEntry => {
        // 将foto字段转为数组
        const foto = [photoEntry.foto];
        // 收集并排序所有zz开头键对应的值
        const tekst = Object.entries(photoEntry)
            .filter(([key]) => key.startsWith('zz'))
            // 按zz后的数字排序,保证顺序正确
            .sort(([keyA], [keyB]) => {
                const numA = parseInt(keyA.slice(2), 10);
                const numB = parseInt(keyB.slice(2), 10);
                return numA - numB;
            })
            .map(([_, value]) => value);
        
        return { foto, tekst };
    })
}));

console.log(JSON.stringify(transformedData, null, 4));

关键步骤说明

  • 外层map遍历原数组的顶层对象,针对每个对象的fotos数组做处理
  • 内层map遍历每个fotos子项:
    1. 直接把foto字段的值包装为数组
    2. 用Object.entries()获取子项的所有键值对,过滤出以zz开头的键
    3. 对过滤后的键按zz后缀的数字排序,避免键顺序混乱导致的内容顺序错误
    4. 提取排序后的值组成tekst数组
  • 最后返回重组后的对象结构,得到目标JSON格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 12:10:28