Как сопоставить объект с объектом - PullRequest
0 голосов
/ 29 мая 2020

Возникла проблема с двумя массивами объектов, и я хочу объединить их данные, связанные с их идентификаторами.

У меня есть два массива таких объектов:

const data = [
  {
    default: false,
    id: 1,
    value: true,
    idModule: 1
  },
  {
    default: false,
    id: 2,
    value: true,
    idModule: 1
  },
  {
    default: false,
    id: 3,
    value: true,
    idModule: 2
  },
  {
    default: false,
    id: 4,
    value: true,
    idModule: 2
  }
];


const modulData = [
  {
    name: 'Administration',
    id: 1,
  },
  {
    name: 'Benutzerverwaltung',
    id: 2,
  }
];

Теперь я хотите объединить эти два, связанные с их idModule == id, чтобы создать новый массив объектов, например:

const result = [
  {
    name: 'Administration',
    id: 1,
    modul: [
      {      
        default: false,
        id: 1,
        value: true,
        idModule: 1
      },
      {
        default: false,
        id: 2,
        value: true,
        idModule: 1
      },    
    ],

  },
  {
    name: 'Benutzerverwaltung',
    id: 2,
    modul: [
      {      
        default: false,
        id: 3,
        value: false,
        idModule: 2
      },
      {
        default: false,
        id: 4,
        value: false,
        idModule: 2
      },    
    ],
  }
];

Как я могу этого добиться?

1 Ответ

0 голосов
/ 29 мая 2020

Вы можете сделать это просто, используя map и filter:

let result = modulData.map(x => {
  x.modul = data.filter(d => d.idModule === x.id);
  return x;
});

Полный код:

const data = [{
    default: false,
    id: 1,
    value: true,
    idModule: 1
  },
  {
    default: false,
    id: 2,
    value: true,
    idModule: 1
  },
  {
    default: false,
    id: 3,
    value: true,
    idModule: 2
  },
  {
    default: false,
    id: 4,
    value: true,
    idModule: 2
  }
];


const modulData = [{
    name: 'Administration',
    id: 1,
  },
  {
    name: 'Benutzerverwaltung',
    id: 2,
  }
];

let result = modulData.map(x => {
  x.modul = data.filter(d => d.idModule === x.id);
  return x;
});
console.log(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...