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

如何将含JSON字符串数组的对象转换为键值匹配的对象数组?

问题解决:将多语言字符串数组转换为配对对象数组

输入对象

{
    "en": "[\"En1\",\"En2\"]",
    "de": "[\"De1\",\"De2\"]"
}

期望输出

[
    {
        "en": "En1",
        "de": "De1"
    },
    {
        "en": "En2",
        "de": "De2"
    }
]

你的当前代码仅完成了将每个语言的JSON字符串解析为数组,但没有将对应位置的元素配对组合成目标对象。以下是两种解决方案:

方案一:动态适配任意语言键(通用型)

如果你的对象可能包含更多语言键,这种写法更灵活:

const obj = {
  en: '["En1","En2"]',
  de: '["De1","De2"]',
};

// 1. 解析所有语言的JSON字符串为数组,并保留键名
const languageData = Object.entries(obj).map(([lang, str]) => ({
  lang,
  values: JSON.parse(str)
}));

// 2. 获取数组长度(默认取第一个语言的数组长度,需确保所有语言数组长度一致)
const itemCount = languageData[0].values.length;

// 3. 按索引遍历,生成每个配对对象
const result = Array.from({ length: itemCount }, (_, idx) => {
  return languageData.reduce((acc, { lang, values }) => {
    acc[lang] = values[idx];
    return acc;
  }, {});
});

console.log(result);

方案二:针对已知语言键(简洁型)

如果语言键固定为en和de,可以直接解析后按索引配对:

const obj = {
  en: '["En1","En2"]',
  de: '["De1","De2"]',
};

// 解析两个语言的数组
const enList = JSON.parse(obj.en);
const deList = JSON.parse(obj.de);

// 遍历数组,生成配对对象
const result = enList.map((enVal, index) => ({
  en: enVal,
  de: deList[index]
}));

console.log(result);

两种方案都能输出你需要的结构,可根据实际场景选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 22:40:25