[英]Merge keys in JSON object to return an array of merged keys and the value with 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)
// 解决问题的最佳和快速方法'
Object.entries(data).reduce((r, [k, v]) => {
使用大 json 时速度较慢。
Object.entries()
const input = { a: { b: 22, c: "hello", d: { f: 10 } }, e: 456 };
function flat(data, key = "", result = []) {
for (let k in data) {
if (typeof data[k] === "object") {
flat(data[k], key + k + ".", result);
} else result.push({ [key + k]: data[k] });
}
return result;
}
console.log(flat(input));
const input = { a: { b: 22, c: "hello", d: { f: 10 } }, e: 456 }; function flat(data, key = "", result = []) { for (let k in data) { if (typeof data[k] === "object") { flat(data[k], key + k + ".", result); } else result.push({ [key + k]: data[k] }); } return result; } console.log(flat(input));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.