Проверить все строки

Я немного застрял, мне нужен способ убедиться, что все строки содержат «новый» в статусе или иначе возвращают false,

var found = data.Lines.find(function(line) {
  if (line.status.some(({
      status
    }) => status !== "new")) {
    return false;
  }
});

См. Пример http://jsfiddle.net/sucL9rnm/10/

Данные

var data = {
  "id": 1,
  "Lines": [{
      "id": 111,
      "status": [{
        "status": "new"
      }]
    },
    {
      "id": 111,
      "status": [{
        "status": "new"
      }]
    },
    {
      "id": 111,
      "status": [{
        "status": "new"
      }]
    }
  ]
}
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
69
4

Ответы 4

Я получил, чувак. Вот простое решение с циклом for:


function isFound() {
  for (var i = 0; i < data.Lines.length; i++)
    if (data.Lines[i].status[0].status !== 'new')
      return false;
  return true;
}

JSFiddle: http://jsfiddle.net/sucL9rnm/24


Эта функция вернет true только в том случае, если все вложенные элементы data.lines имеют атрибут статуса «новый». Попробуйте. Дайте мне знать, если у вас возникнут дополнительные вопросы.

Вот возможное решение:

var data = {
  "id": 1,
  "Lines": [{
      "id": 111,
      "status": [{
        "status": "new"
      }]
    },
    {
      "id": 111,
      "status": [{
        "status": "new"
      }]
    },
    {
      "id": 111,
      "status": [{
        "status": "new"
      }]
    }
  ]
}
console.info(data.Lines.every(d => d.status[0].status === 'new'));

Некоторые строки могут не иметь свойства status, что может привести к поломке. см. пример jsfiddle.net/sucL9rnm/27 - в этом случае он должен вернуть false

user88432 06.06.2018 17:29

Использование .map и .filter:

data.Lines.filter(line => {
  return line.status && line.status.map(item => item.status)
  .filter(status => status == 'new')
  .length == 0
})
.length > 0

Это решение учитывает, что data.Lines может иметь status с более чем одним объектом.

Некоторые строки могут не иметь свойства status, что может привести к поломке. Должен вернуть false

user88432 06.06.2018 17:31

Я соответствующим образом обновлю свой ответ, но это информация, которую было бы полезно включить в ваш вопрос.

Alex Dovzhanyn 06.06.2018 17:33

Просто подход с использованием короткого IF и фильтра

(data.Lines.filter(o=>{
   return o.status[0].status !='new';
}).length)?console.info(false):console.info(true)

Если длина статуса больше 0:

(data.Lines.filter(o=>{
    return o.status.filter(o2=>{
        return  o2.status !='new';
   }).length
}).length)?console.info(false):console.info(true)

Здесь нестандартный подход, преимущество, совсем не обязательно знать, каков объект.

(data.Lines.length == JSON.stringify(data).match(/new/g).length)?console.info(true):console.info(false);

Нужно проверять все в массиве статусов, а не в status[0].

user88432 06.06.2018 18:03

Другие вопросы по теме