Показать сообщение отдельно
  #1 (permalink)  
Старый 04.09.2019, 20:20
Аватар для komplekt_17
Аспирант
Отправить личное сообщение для komplekt_17 Посмотреть профиль Найти все сообщения от komplekt_17
 
Регистрация: 14.01.2017
Сообщений: 46

Как получить новый массив после сравнения 2-х исходных
Всем Доброго времени года.
Дано 2 массива объектов(pages[] и categories[]). Нужно перебрав элементы массива и свойств каждого из объектов, получить новый массив с изменёнными свойствами объектов в нём:
Делаю так:
categories: [{_id:'5d636c50349128976d09806a',catName:'Banking',catClass:'banking',userId:''}, 
{_id:'5d636c50349128976d09806b',catName: 'Torrents', catClass: 'torrents', userId:''}, 
{_id:'5d636c50349128976d09806c',catName: 'AudioBooks', catClass: 'audiobooks', userId:''}];

pages: [
{id: 0, name: 'N-0', link: '', ctgrId: '5d636c50349128976d09806a',userId: '',screen:''},
{id: 1, name: 'N-1', link: '', ctgrId: '5d636c50349128976d09806a',userId: '',screen:''},
{id: 2, name: 'N-2', link: '', ctgrId: '5d636c50349128976d09806a',userId: '',screen:''},
{id: 3, name: 'N-3', link: '', ctgrId: '5d636c50349128976d09806c',userId: '',screen:''}]

const getPagesArr = (pages, categories) =>{
	for(var i=0; i <= pages.length; i++){
		for(var j=0; j <= categories.length; j++){
			for(var kk in pages[i]){
				for(var dd in categories[j]){
					if(pages[i][kk] === categories[j][dd]){
						pages[i]['ctgrId'] = categories[j]['catClass']
					}
				}
			}
		}
	}
	return pages;
}

const newArray = getPagesArr(pages, categories);

Должен получиться новый массив pages, в котором у объектов со свойством ctgrId должно быть значение объектов catClass из categories, при совпадении свойств pages[i]['ctgrId'] === categories[j]['_id']
Ответить с цитированием