我需要转换此对象:
{
"en": "[\"En1\",\"En2\"]",
"de": "[\"De1\",\"De2\"]"
}
致:
[
{
"en": "En1",
"de": "De1"
},
{
"en": "En2",
"de": "De2"
}
]
你能帮帮我吗?
我尝试了以下方法:
const obj = {
en: '["En1","En2"]',
de: '["De1","De2"]',
};
const result = Object.entries(obj).map(([key, value]) => ({
[key]: JSON.parse(value),
}));
console.log(result)
但这只返回了一个对象数组,我不知道如何创建一个新的键值匹配数组。
4条答案
按热度按时间xienkqul1#
kokeuurv2#
你可以把你的对象分成两个数组,然后像这样把它们组合起来
eanckbw93#
您可以使用
Array#map
和Array#reduce
的组合,如下所示。项目数不是硬编码的,因此这将适用于任何数量的项目:k97glaaz4#
这里我选择了一种更强制的方法,它为解析后的
values
数组的每个索引向returnArray
数组追加对象,如果value
与idx + 1
匹配(例如'De1'.includes(1)
),则在returnArray
数组的当前索引处的对象上初始化键值对。我的答案依赖于很多关于输入的假设,如果解析的字符串数组元素不是按数字顺序排列的,或者在值
eg De3, De1, De2
或De1, De6
中有间隔,那么当前的解决方案不会考虑到这一点。