我有这样的输入:
{
a: 'b',
c: {
d: 'e',
f: {
g: 'h',
i: 'j'
}
}
}
无论深度多高,我如何输出这样的字符串,在该字符串中创建一个映射到每个初始键上最后一个子代的值的映射:
'a=b&c[d]=e&c[f][g]=h&c[f][i]=j'
答案 0 :(得分:1)
您是正确的,需要递归,以及map
和concat
和join
之类的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('&'));