В моем массиве я получаю несколько объектов. Каждый из объектов содержит количество дочерних узлов, в которых есть дочерний элемент, имеющий массив с дочерними элементами, используя значение этого массива, как я могу получить объект, что мне нужно..?
Я использую underscore.js, чтобы получить это, но я не получаю значение. Любой поможет мне правильно подобрать то, что я описал, используя uderscore.js, пожалуйста..
вот мой пример и попробуйте:
var obj = [
{
name : true,
deleted : false,
updated : [
{
upStatus : true
}
]
},
{
name : true,
deleted : false,
updated : [
{
upStatus : false
}
]
},
{
name : true,
deleted : false,
updated : [
{
upStatus : false
}
]
},
{
name : true,
deleted : false,
updated : [
{
upStatus : false
}
]
},
{
name : true,
deleted : false,
updated : [
{
upStatus : false
}
]
}
]
var hws = _.select(obj,function(val,key){
return val.updated.upStatus == false;
});
console.log (hws); // i am not getting any value. since i am not able to find the array value..
Просто используйте _.find
или _.findWhere
для _.findWhere
массива, они оба возвращаются на первую удовлетворенную запись и возвращают undefined
Если совпадение не найдено или список пуст:
var hws = _.select(obj,function(val,key){
return _.find(val.updated, function(status) {
return status.upStatus == false;
})
});
Вот скрипка
Вам нужно использовать return val.updated[0].upStatus == false;
поскольку updated
свойство представляет собой массив, который вы должны получить, его первый элемент
upStatus
не должен быть false
во всем updated
массиве
updated
свойство содержит массив объектов, а не один объект с этим свойством upStatus
. Поэтому используйте
function(val) {
return !val.updated.length || !val.updated[0].upStatus;
}
как выражение фильтра. Если вам нужно проверить все объекты в массиве, используйте some
или every
проверку на них:
function(val) {
return _.some(val.updated, function(update) {
return !update.upStatus;
});
}
updated
массив содержит false
upStatus
es?