Нужно получить массив объектов, в нем заменить childrenId на полный объект, если childrenId и id совпадают

const obj = [
  {
    id: 1,
    name: 'aa',
    children: {
      childrenId: 3
    }
  },
  {
    id: 2,
    name: 'bb',
    children: null
  },
  {
    id: 3,
    name: 'cc',
    children: {
      childrenId: 1
    }
  }
  ];

let result = [];
for (let i = 0; i < obj.length; i++){
  if (obj[i].children){
      let index = obj[i].children.childrenId;
      obj[i].children.childrenId = obj[index];
      result.push(obj[i]);
  }
}

console.log(result)

есть такая попытка решения ...


Ответы (1 шт):

Автор решения: WalkMess

//По описанию что-то вроде этого вам нужно 
const data = [
  {
    id: 1,
    name: 'aa',
    children: {
      childrenId: 1
    }
  },
  {
    id: 2,
    name: 'bb',
    children: null
  },
  {
    id: 3,
    name: 'cc',
    children: {
      childrenId: 3
    }
  }
  ];
 
const filterData = data.map(({id, children}) => {  
  if (id === children?.childrenId) {  
    return children.childrenId = {...data}; 
  }
})
console.log(filterData); 

Вот еще такой сделал вариант.

const data = [
  {
    id: 1,
    name: 'aa',
    children: {
      childrenId: 1,
    },
  },
];

for (const element of data) {
  const { id, children } = element;

  if (id === children?.childrenId) {
    children.childrenId = { ...data };
  }

  console.log(element);
}

→ Ссылка