我们尝试根据点表示法字符串设置嵌套对象值。
输入示例:
{
"bowtime": [
"30",
" 1",
" 3",
" 20"
],
"bowstate.levi.leviFlo.totalFloQuot": ".95",
"bowstate.crem.cremQuot": "79"
}
Run Code Online (Sandbox Code Playgroud)
期望的输出:
{
"bowstate": {
"levi": {
"leviFlo": {
"totalFloQuot": 0.95
}
},
"crem": {
"cremQuot": 79
}
},
"bowtime": [
"30",
" 1",
" 3",
" 20"
],
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,代码运行良好,但看起来过于复杂,并且只允许 4 层嵌套。我们如何简化此代码,并使其适用于嵌套超过 4 层的引用:
const dayspace = {};
var keyArr = Object.keys(input);
for (key in keyArr) {
if ( keyArr[key].indexOf('.') > -1 ) {
var setArr = keyArr[key].split('.');
dayspace[setArr[0]] = dayspace[setArr[0]] || …Run Code Online (Sandbox Code Playgroud)