javascript - 合并 JSON 对象中的键以使用 Javascript 返回合并键的数组和值
问题描述
我想用 Javascript 将输入转换为输出。有什么帮助吗?输入也可以有更多的嵌套对象。
const input = {
a: {
b: 22,
c: 'hello',
},
e: 456
}
const output = [
{ 'a.b': 22},
{ 'a.c': 'hello' },
{ 'e': 456 }
];
解决方案
reduce
您可以为此使用方法创建递归函数。
const input = {
a: {
b: true,
c: 'hi',
},
d: 123
}
function convert(data, prev = '') {
return Object.entries(data).reduce((r, [k, v]) => {
let key = prev + (prev ? '.' : '') + k;
if (typeof v == 'object') {
r.push(...convert(v, key))
} else {
r.push({ [key]: v })
}
return r;
}, [])
}
const result = convert(input)
console.log(result)
推荐阅读
- python - DataFrame GroupBy 到 VolumeBars
- r - 埃拉托色尼筛的这个 R 函数是如何工作的?
- c++ - 复制构造函数 C++ 没有正确复制指针
- android - 如何延迟第二个片段,直到第一个在 ViewPager 中加载数据?
- css - css-grid:具有不同行数的列
- java - Eclipse 无法以 .metadata/.log 中的错误(“未处理的事件循环异常”等)启动
- flutter - 错误:依赖于未知来源的dependency_overrides,版本解决失败
- php - Codeigniter-4 重定向和 ajax 问题
- discord.js - 当我使用 discordjs-commando setProvider() 时,sqlite 出错
- sql - 如果一列中的值存在于另一列中,则过滤行