首页 > 解决方案 > 合并 JSON 对象中的键以使用 Javascript 返回合并键的数组和值

问题描述

我想用 Javascript 将输入转换为输出。有什么帮助吗?输入也可以有更多的嵌套对象。

const input = {
   a: {
     b: 22,
     c: 'hello',
   },
   e: 456
}

const output = [
    { 'a.b': 22},
    { 'a.c': 'hello' },
    { 'e': 456 }
];

标签: javascriptarraysjsonreactjsjavascript-objects

解决方案


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)


推荐阅读