【发布时间】:2021-11-02 23:39:32
【问题描述】:
我需要将对象 input 解码为对象 output,如下所示:
let input = {
a : 'b',
'c.d': 'e',
'c.f': 'g',
'c.h.0':'i',
'c.h.1':'j',
'c.h.2':'k'
}
let output = {
a : 'b',
c: {
d: 'e',
f:'g',
h: ['i', 'j', 'k']
}
}
我有这个解码功能,除了数组,它工作得很好。如何更改此函数以也支持数组解码,并返回上述输出对象
function assembleQueryData(input) {
const output = {};
const keys = Object.keys(input);
for (let i = 0; i < keys.length; i++) {
const key = keys[i];
const dots = key.split(".");
let last = output;
for (let j = 0; j < dots.length; j++) {
const dot = dots[j];
if (j >= dots.length - 1) {
last[dot] = input[key];
} else {
last[dot] = last[dot] || {};
}
last = last[dot];
}
}
console.log(output);
return output;
}
【问题讨论】:
-
不得不提一下,
d: 'e,的代码有错别字,应该是d: 'e',。 -
输入的是字符串吗?
-
嘿,代码无法运行,我不得不将对象键与
'类似:'c.d': 'g',并且不得不将input.keys替换为Object.keys(input),您能改进代码吗?你可以把它作为你的问题中的可执行文件 -
我已经修复了代码
标签: javascript node.js arrays javascript-objects decoding