Как правильно отобразить два массива с логическими значениями - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть список accounts. У меня также есть список accountsWithSelectedField, который я сопоставил следующим образом:

this.accountsWithSelectedField = this.accounts.map(s => ({...s, selected: false}));

Теперь из запроса http я получаю список accountsSetups (выбранные учетные записи). Я должен сопоставить все соответственно. По сути, это должно выглядеть так:

accounts: 111, 222, 333, 444
accountsWithSelectedField: {111: false}, {222: false}, {333: false}, {444: false}
accountSetups(from http): {222, true, true}, {333, true, false}
After mapping => accountsWithSelectedField: {111: false}, {222: true}, {333: true}, {444: false}

Мне нужна помощь, чтобы понять, как правильно отобразить карту, я попытался сделать это так, но есть некоторые проблемы, либо iban не показывает, либо все отображается как истинное.

this.accountsWithSelectedField = this.accounts.map(o => data.accountSetups.map(s => ({
       iban: o.iban,
       selected: s.someBoolean || s.anotherBoolean
     })));

Также пробовал так:

for (const account of this.accountsWithSelectedField) {
      for (const acc of data.accountSetups) {
        if (account.iban === acc.account.iban) {
          console.log(account.iban + ' is true');
          account.selected = true;
        }
      }
    }

И я получил 3 из шести ибанов is true (правильно), но все шесть из них были выбраны Я не могу понять почему?

1 Ответ

0 голосов
/ 29 апреля 2020

Я бы сделал что-то подобное:

const accounts = [111, 222, 333, 444];
const accountsWithSelectedField
  = accounts.map(account => ({id: account, someBoolean: false}));
const accountSetups = [
  {id: 222, someBoolean: true, anotherBoolean: true, iban: '123'},
  {id: 333, someBoolean: true, anotherBoolean: false, iban: '456'}
];

for (const accountSetup of accountSetups) {
  const associatedAccount = accountsWithSelectedField.find(account => account.id === accountSetup.id);
  if (associatedAccount) {
    associatedAccount.someBoolean = accountSetup.someBoolean || accountSetup.anotherBoolean;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...