Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Làm phẳng đối tượng lồng nhau (Recursively flat an object) JavaScript

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 }