Как добавить элементы в свойство массива объектов, если дублируется другое свойство из родительского массива? [Дубликат]

Мне кажется, вам нужен service, который обрабатывает процесс аутентификации (и его хранение).

В этой службе вам понадобятся некоторые основные методы:

  • isAuthenticated()
  • login()
  • logout()
  • и т. д. ...

Эта услуга должна быть введена в ваших контроллерах каждого модуля:

  • В разделе вашей панели мониторинга используйте эту службу, чтобы проверить подлинность пользователя (метод service.isAuthenticated()). если нет, перенаправляйте / login
  • . В разделе входа в систему просто используйте данные формы для аутентификации пользователя с помощью вашего метода service.login()

. Хороший и надежный пример для этого поведения является проект angular-app и, в частности, его модуль безопасности , который основан на удивительном HTTP-аут-перехватчике

Надеюсь, это поможет

-1
задан Ezequiel Miranda 30 March 2019 в 22:16
поделиться

2 ответа

Используйте Array.reduce() для преобразования массива в карту по proyectId. Преобразуйте карту в массив записей ([proyectId, customFields]) с помощью Array.from() и используйте Array.map() для преобразования записей в формат объектов:

const objectArray = [{"proyectId":1,"fieldName":"dog","fieldValue":"wof"},{"proyectId":1,"fieldName":"cat","fieldValue":"meow"}];

const result = Array.from(
  objectArray.reduce((r, { proyectId, ...o }) => 
    r.set(proyectId, [...r.get(proyectId)  || [], o])
  , new Map())
).map(([proyectId ,customFields]) => ({
  proyectId,
  customFields
}));

console.log(result);

0
ответ дан Ori Drori 30 March 2019 в 22:16
поделиться

Вы можете использовать Array.reduce для индексации ваших объектов по ключу (proyectId), а затем использовать Object.values для получения только значений:

const input = [{'proyectId': 1, 'fieldName': 'dog', 'fieldValue': 'wof'}, {'proyectId': 1, 'fieldName': 'cat', 'fieldValue': 'meow'}];

const result = Object.values(input.reduce((map, {proyectId, ...fields}) => {
  map[proyectId] = map[proyectId] || {proyectId, customFields: []};
  map[proyectId].customFields.push(fields);
  return map;
}, {}));

console.log(result);

PS: пожалуйста, поделитесь своими попытками в следующий раз, как предлагалось ранее.

0
ответ дан Jeto 30 March 2019 в 22:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: