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, время: 22:53. |