Я немного застрял, мне нужен способ убедиться, что все строки содержат «новый» в статусе или иначе возвращают 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"
}]
}
]
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я получил, чувак. Вот простое решение с циклом 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'));Использование .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
Я соответствующим образом обновлю свой ответ, но это информация, которую было бы полезно включить в ваш вопрос.
Просто подход с использованием короткого 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].
Некоторые строки могут не иметь свойства status, что может привести к поломке. см. пример jsfiddle.net/sucL9rnm/27 - в этом случае он должен вернуть false