繁体   English   中英

合并 JSON 对象中的键以使用 Javascript 返回合并键的数组和值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM