Задать вопрос
@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;
      });
    });
  };

  • Вопрос задан
  • 213 просмотров
Подписаться 3 Простой Комментировать
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
Коротко:

const isValid = arr =>
  arr.every(n => Object.values(n).every(m => !m.isRequired || m.value));

Длинно:

function isValid(arr) {
  for (const n of arr) {
    for (const k in n) {
      if (n.hasOwnProperty(k) && n[k].isRequired && !n[k].value) {
        return false;
      }
    }
  }

  return true;
}
Ответ написан
Комментировать
ArsenyMatytsyn
@ArsenyMatytsyn Куратор тега JavaScript
Руководитель frontend направления, предприниматель
Для подобных задач проще использовать map, filter, другие методы обработки массивов и деструктуризацию.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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