Добавить данные поля объектов массива в один объект в JavaScript - PullRequest
0 голосов
/ 21 мая 2018

Я получаю эти данные в свой ответ

var data=[ { id: 9,
    ticketId: 9,
    member: { id: 3, email: 'ganeshpandi@gmail.com' } },
  { id: 10,
    ticketId: 9,
    member: { id: 4, email: 'braveganesh128@gmail.com' } } ];

Я хочу отправить всю почту на все электронные письма участника,

Мой ожидаемый результат:

var data=[ {
    ticketId: 9,
    member: {  email: ['ganeshpandi@gmail.com','braveganesh128@gmail.com'] } },
   ];

Возможен ли этот результат или нет в foreach?

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Написав и используя реализацию универсального Lookup в JavaScript, вы можете упростить логику в методе Array#reduce() и затем отобразить пары ключ / значение поиска в каждую группуэлектронные письма.

const data = [{ id: 9, ticketId: 9, member: { id: 3, email: 'ganeshpandi@gmail.com' } }, { id: 10, ticketId: 9, member: { id: 4, email: 'braveganesh128@gmail.com' } }]
const lookup = data.reduce(
  (lookup, { ticketId, member: { email } }) => lookup.add(ticketId, email),
  new Lookup()
)
const result = [...lookup].map(
  ([ticketId, emails]) => ({ ticketId, member: [...emails] })
)

console.log(result)
<script src="https://cdn.rawgit.com/patrickroberts/4e6344a710569e4b7d280edc5684188d/raw/2aee1a65bfdbd7873bfacfe7ea3b5ef9a7f355f2/lookup.js"></script>
0 голосов
/ 21 мая 2018

Вы можете использовать array#reduce, чтобы сгруппировать объект массива на основе ticketId в новом накопителе объектов, затем с помощью Object.values() извлечь все значения для каждого ключа.

var data = [{ id: 9, ticketId: 9, member: { id: 3, email: 'ganeshpandi@gmail.com' } }, { id: 10, ticketId: 9, member: { id: 4, email: 'braveganesh128@gmail.com'}}],
    result = Object.values(data.reduce((r, {ticketId, member: {email}}) => {
      r[ticketId] = r[ticketId] || {ticketId, member:{email: []}};
      r[ticketId].member.email.push(email);
      return r;
    },{}));
console.log(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...