Убедитесь, что каждое поле в массиве равно значению - PullRequest
0 голосов
/ 21 мая 2019

У меня есть такие данные:

 this.registrations =   [{
    event: "Juniors 18s",
    day: "Friday",
    group: "nonpro",
    players: [{
      first: "Mary",
      last: "Mack",
      email: "marymack@dressedinblack.com",
      phone: "8888675309",
      signed: false,
      waivers: [{
        has_signed: true,
        token: "ab",
        url: "somesite.com",
        signatureUrl: "someothersite.com",
        message: "Minor waiver"
        },
        {
        has_signed: true,
        token: "ab",
        url: "somesite.com",
        signatureUrl: "someothersite.com",
        message: "Parental waiver"
        }
      ]
    },
    {... another record like that one}
    ]

Есть ли способ показать, подписал ли каждый игрок все отказы?Я знаю, что есть функция .every, но я не уверен, как использовать ее с этой вложенной структурой данных.

Я думал что-то вроде ниже, но это не сработало:

this.registrations.has_signed = this.registrations.waivers.every( waiver => waiver.has_signed === true ) 

Тогда я попробовал этот, который, по крайней мере, кажется, что это может быть ближе к победе (но не совсем).свойство Players.signed не используется, но кто-то по умолчанию выставляет его как false, поэтому я хотел бы использовать его:

  this.registrations.forEach(reg => {
    reg.players.forEach(p => {
      if (p.waivers.every(waiver => waiver.has_signed === true)) {
        p.signed = true;
      } else {
        p.signed = false;
      }
      return reg;
    });
  });

Ответы [ 2 ]

0 голосов
/ 21 мая 2019
this.registrations.has_signed = false;
this.registrations.forEach(registration => 
    registration.players.forEach(player => 
        this.registrations.has_signed = player.waivers.every(waiver => waiver.has_signed)
    )
);

Вы должны сначала зациклить внешние массивы, чтобы добраться до освобождения, и использовать every, чтобы узнать has-signed.

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

Этот фрагмент должен выполнить требуемую задачу.


const modifiedPlayers = this.registrations.map(reg => reg.players).map(player => {
  player.signed = player.waivers.every(waiver => waiver.has_signed);
  return player;
});

this.registrations.players = modifiedPlayers;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...