Как проверить каждый элемент индекса 0 массива, если он ложный, кроме 2? - PullRequest
1 голос
/ 25 июня 2019

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

Это состав массива с каждым элементом:

my_team: startupMyTeamInfo.team.map(item => ({
          name: item.name,
          email: item.email,
          about: item.about,
          photo: item.photo,
          mobile: item.mobile,
          photo_id: item.photo_id,
          last_name: item.last_name,
          country_code_mobile: item.country_code_mobile,
        })),
});

Элементы, которые мне нужно исключить, это photo и photo_id, поскольку они не требуются.

Это кнопка:

                <PrimaryButton
                  type="button"               
                  onClick={handleUpdateApiCall}               
                  isDisabled={
                    (!startupFourthStepForm.my_team[0].name …)
                  }
                />

Итакв этом isDisabled реквизите мне нужно что-то вроде

isDisabled={
 !startupFourthStepForm.my_team[0].name &&
 !startupFourthStepForm.my_team[0].email &&
 !startupFourthStepForm.my_team[0].about &&
 !startupFourthStepForm.my_team[0].mobile &&
 !startupFourthStepForm.my_team[0].last_name &&
 !startupFourthStepForm.my_team[0].country_code_mobile &&
}

вроде, это единственный путь, идущий за каждым ключом, или есть более программный способ?

Ответы [ 3 ]

4 голосов
/ 25 июня 2019

Один из вариантов - извлечь два разрешенных свойства и поместить остальные в объект с синтаксисом отдыха объектов, а затем проверить, является ли every одно из значений остальных объектов ложным:

const { photo, photo_id, ...rest } = startupFourthStepForm.my_team[0];

а затем

isDisabled={ Object.values(rest).every(val => !val)) }
1 голос
/ 25 июня 2019

Я представляю другой подход для решения этой проблемы.

Сначала создайте другой объект, содержащий только выбранные поля из объекта my_team, используя метод reduce.

const team_subset = ['name', 'email', 'about', 'mobile', 'last_name', 'country_code_mobile'].reduce((o, k) => { o[k] = startupFourthStepForm.my_team[0][k]; return o; }, {});

После этогопроверьте, есть ли какое-либо значение truthy в новом объекте, и отмените результат для сохранения в переменной isDisabled.

isDisabled = {!Object.keys((team_subset)).some(e => team_subset[e])};

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

0 голосов
/ 25 июня 2019
my_team: startupMyTeamInfo.team.map(item => {
  delete item.photo;
   delete item.photo_id;
   return item;
}
});

Немного лучший способ сделать это

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