通过引用父键的嵌套对象创建字符串

时间:2018-06-30 05:54:01

标签: javascript recursion

我有这样的输入:

{
 a: 'b',
  c: {
    d: 'e',
    f: {
      g: 'h',
      i: 'j'
    }
  }
}

无论深度多高,我如何输出这样的字符串,在该字符串中创建一个映射到每个初始键上最后一个子代的值的映射:

'a=b&c[d]=e&c[f][g]=h&c[f][i]=j'

1 个答案:

答案 0 :(得分:1)

您是正确的,需要递归,以及mapconcatjoin之类的Array方法

var x = {
 a: 'b',
  c: {
    d: 'e',
    f: {
      g: 'h',
      i: 'j'
    }
  }
};
const makePath = (path, key) => path ? `${path}[${key}]` : `${key}`;
const doThings = (obj, path='') => 
    [].concat(...Object.entries(obj)
        .map(([key, value]) => 
            typeof value === 'object' ? doThings(value, makePath(path, key)) : `${makePath(path, key)}=${value}`
        )
    );

console.log(doThings(x).join('&'));