@YanaLins
web

Как проверить, что хотя бы одно значение во вложенных объектах равно false?

Есть объект:

{
   "ru":{
      "11.11.11.11":{
         "valid": true,
         "expired_at": "2022-10-03T13:57:56Z"
      },
      "22.22.22.22":{
        "valid": true,
        "expired_at": "2022-10-03T13:57:56Z"
     }
   },
   "en":{
      "33.33.33.33":{
         "valid": false,
         "expired_at": "2022-10-03T13:57:56Z"
      }
   }
}

Нужно проверить, что если хотя бы одно поле valid === false, то возвращать false.
Поле valid есть в каждом объекте верхнего уровня (ru, en и т.д.).

Получилось сделать что-то подобное, но до конца не могу додуматься как сделать (это computed поле vue):

isValid() {
      return Object.keys(obj).forEach((key) => {
        Object.keys(obj[key]).forEach((k) => {
          Object.values(obj[key][k]).every(item => item)
        })
      })
    }
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
isValid() {
  return Object.values(obj).flatMap(Object.values).every(n => n.valid);
},

Или даже так, чтобы лишний раз values-flatMap не дёргать при изменениях значений свойств valid:

objects() {
  return Object.values(this.obj).flatMap(Object.values);
},
isValid() {
  return this.objects.every(n => n.valid);
},
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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