reduce создания масива по обєктам
доброго времени суток надо сделать массив где сначала идет grop а затем его дети где айдишка совпадает и через reduce вот что у меня получилось
const grop = [ { name: 'merseded', groupName: 'avto', idParent: '11' }, {name: 'bmv', groupName: 'avto', idParent: '20' } ] const city = [{name: 'test1', idMain: '11'}, {name: 'test2', idMain: '11'}, {name: 'test3', idMain: '20'}, {name: 'test4', idMain: '11'}] const resalt = [...grop, ...city] console.log(resalt) const resaltCity = resalt.reduce((acu, cur) => { const findSuperGroup = acu.find(el => el.groupName == cur.groupName); if(findSuperGroup && findSuperGroup.idParent == acu.idMain){ return [...acu.filter(item => item.groupName !== null), {...cur}] } else { } return [...acu, {...cur}]; }, []); console.log('resaltCity', resaltCity) а должно бить const gropResalt = [ name: 'merseded', groupName: 'avto', idParent: '11' {name: 'test', idMain: '11'}, {name: 'test', idMain: '11'}, {name: 'test', idMain: '11'}, name: 'bmv', groupName: 'avto', idParent: '20', {name: 'test', idMain: '20' ] |
misha.korolcov,
<script> const grop = [ { name: 'merseded', groupName: 'avto', idParent: '11' }, {name: 'bmv', groupName: 'avto', idParent: '20' } ]; const city = [{name: 'test1', idMain: '11'}, {name: 'test2', idMain: '11'}, {name: 'test3', idMain: '20'}, {name: 'test4', idMain: '11'}]; const resaltCity = grop.map(obj => (obj.children = city.filter(({idMain}) => idMain == obj.idParent), obj)); document.write(`<pre>${JSON.stringify(resaltCity, "", 4)}</pre>`) </script> темы создавать здесь Общие вопросы Javascript |
Часовой пояс GMT +3, время: 10:18. |