@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;
      });
    });
  };

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

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

Похожие вопросы