Viết hàm biến đổi đối tượng lồng nhau thành đối tượng phẳng với khóa là đường dẫn nối bằng dấu chấm.
Ví dụ:
// Input: { a: 0, b: {x: {y: 1, z: 2}}, c: 3 }// Output: { a: 0, 'b.x.y': 1, 'b.x.z': 2, c: 3 }Sử dụng đệ quy:
Ví dụ
const obj = { a: 1, b: {x: {y: 1, z: 2}}, c: 3};const obj1 = { a: 0, b: 0, c: 0};const object = { a: 0, b: { x: { y: 1, z: 2 } }, c: 3 };const stringifyKeys = (obj, str = '', fresh = {}) => { const keys = Object.keys(obj); for (let i = 0; i < keys.length; i++) { if (typeof obj[keys[i]] === 'object' && !Array.isArray(obj[keys[i]]) && obj[keys[i]]) { stringifyKeys(obj[keys[i]], str + `${keys[i]}.`, fresh); } else { fresh[str + keys[i]] = obj[keys[i]]; } } return fresh;};console.log(stringifyKeys(obj));console.log(stringifyKeys(object));console.log(stringifyKeys(obj1));Kết quả
Đầu ra trong console sẽ là:
{ a: 1, 'b.x.y': 1, 'b.x.z': 2, c: 3 }{ a: 0, 'b.x.y': 1, 'b.x.z': 2, c: 3 }{ a: 0, b: 0, c: 0 }