@DanceMonkeyTime

Как мне провалидировать массив?

Всем привет, мне нужно каждый раз при вызове ф-ции isValid, проходится по элементам массива и если оно isRequired и value отсутствует то мы возвращаем false, еслиisRequired && valueесть, то true

Таких объектов может быть много в массиве.

const fields = [
  {
    companyName: {
      key: 'companyName',
      value: '',
      isRequired: true,
    },
    country: {
      key: 'country',
      options: [],
      value: '',
      isRequired: false,
    },
    region: {
      key: 'region',
      options: [],
      value: '',
      isRequired: false,
    },
    companyWebsite: {
      key: 'companyWebsite',
      value: '',
      isRequired: false,
    },
  },

 {
    companyName: {
      key: 'companyName',
      value: '',
      isRequired: true,
    },
    country: {
      key: 'country',
      options: [],
      value: '',
      isRequired: false,
    },
    region: {
      key: 'region',
      options: [],
      value: '',
      isRequired: false,
    },
    companyWebsite: {
      key: 'companyWebsite',
      value: '',
      isRequired: false,
    },
  },
];


Мой вариант:


const isValid = () => {
    return fields.forEach((item) => {
      const field = Object.values(item);

      field.forEach((element) => {
        if (element.isRequired && element.value) {
          return true;
        }
        return false;
      });
    });
  };

  • Вопрос задан
  • 145 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
fields.every(n => Object.values(n).every(m => !m.isRequired || m.value))
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
ArsenyMatytsyn
@ArsenyMatytsyn Куратор тега JavaScript
CEO iAmStudio, предприниматель.
Для подобных задач проще использовать map, filter, другие методы обработки массивов и деструктуризацию.
Ответ написан
@LolaHuligang
А у меня вместо объектов тупой switch по ключам и функции, и ничего перебирать не надо.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
24 окт. 2020, в 20:52
27000 руб./за проект
24 окт. 2020, в 20:39
2000 руб./за проект
24 окт. 2020, в 20:39
2000 руб./за проект