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

Tạo khóa con từ khóa cha trong mảng JavaScript

Cho mảng đối tượng có id, parent_id, title. Viết hàm thêm thuộc tính childs chứa mảng id của tất cả con cháu (trực tiếp và gián tiếp).

Kết quả mong đợi:

[  { id: 1, parent_id: 0, title: 'Movies', childs: [3, 5, 6] },  { id: 2, parent_id: 0, title: 'Music', childs: [4, 7, 8] },  ...]

Ví dụ

const arr = [  { id: 1, parent_id: 0, title: 'Movies' },  { id: 2, parent_id: 0, title: 'Music' },  { id: 3, parent_id: 1, title: 'Russian movies' },  { id: 4, parent_id: 2, title: 'Russian music' },  { id: 5, parent_id: 3, title: 'New' },  { id: 6, parent_id: 3, title: 'Top10' },  { id: 7, parent_id: 4, title: 'New' },  { id: 8, parent_id: 4, title: 'Top10' },  { id: 9, parent_id: 0, title: 'Soft' }];const generateChild = arr => {  return arr.reduce((acc, val, ind, array) => {    const childs = [];    array.forEach((el, i) => {      if (childs.includes(el.parent_id) || el.parent_id === val.id) {        childs.push(el.id);      }    });    return acc.concat({ ...val, childs });  }, []);};console.log(generateChild(arr));

Kết quả

Đầu ra trong console sẽ là:

[  { id: 1, parent_id: 0, title: 'Movies', childs: [3, 5, 6] },  { id: 2, parent_id: 0, title: 'Music', childs: [4, 7, 8] },  { id: 3, parent_id: 1, title: 'Russian movies', childs: [5, 6] },  { id: 4, parent_id: 2, title: 'Russian music', childs: [7, 8] },  { id: 5, parent_id: 3, title: 'New', childs: [] },  { id: 6, parent_id: 3, title: 'Top10', childs: [] },  { id: 7, parent_id: 4, title: 'New', childs: [] },  { id: 8, parent_id: 4, title: 'Top10', childs: [] },  { id: 9, parent_id: 0, title: 'Soft', childs: [] } ]