本文最后更新于:2023年3月19日 晚上
扁平化对象转普通对象
实现一个函数,将扁平化对象转换为“嵌套”字典对象的功能。
输入
1 2 3 4 5 6 7
| { "A": 1, "B.A": 2, "B.B": 4, "CC.D.E": 3, "CC.D.F": 5 }
|
输出
1 2 3 4 5 6 7 8 9 10 11 12 13
| { "A": 1, "B": { "A": 2, "B": 4 }, "CC": { "D": { "E": 3, "F": 5 } } }
|
解答
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| const formatObject = (obj: object): object => { const res = {}; const keys = Reflect.ownKeys(obj); for (const key of keys) { if ((<string>key).includes(".")) { const keyArr = (<string>key).split("."); keyArr.reduce((a: object, b: string, index: number): object => { if (index === keyArr.length - 1) a[b] = obj[key]; if (!a[b]) a[b] = {}; return a[b]; }, res); } else res[key] = obj[key]; } return res; };
formatObject({ A: 1, "B.A": 2, "B.B": 4, "CC.D.E": 3, "CC.D.F": 5, });
|