Как выбрать объект, используя его значение массива детей ..?

0

В моем массиве я получаю несколько объектов. Каждый из объектов содержит количество дочерних узлов, в которых есть дочерний элемент, имеющий массив с дочерними элементами, используя значение этого массива, как я могу получить объект, что мне нужно..?

Я использую 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..

Демо-версия

Теги:
arrays
underscore.js

3 ответа

2
Лучший ответ

Просто используйте _.find или _.findWhere для _.findWhere массива, они оба возвращаются на первую удовлетворенную запись и возвращают undefined Если совпадение не найдено или список пуст:

var hws = _.select(obj,function(val,key){    
    return _.find(val.updated, function(status) {
         return status.upStatus == false;
    })
});

Вот скрипка

  • 0
    Не звоните людям, которые используют "_.find или _.findWhere" детей :(
  • 0
    Я не сожалею, мой бедный английский, лучше сейчас? @ProblemFactory
Показать ещё 1 комментарий
0

Вам нужно использовать return val.updated[0].upStatus == false; поскольку updated свойство представляет собой массив, который вы должны получить, его первый элемент

DEMO

  • 0
    вы правы, но есть шанс получить несколько значений массива .. с другим значением
  • 0
    @ 3gwebtrain, вы имеете в виду, что upStatus не должен быть false во всем updated массиве
0

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;
    });
}
  • 0
    У меня есть изменение, чтобы получить значение массива no.of как true и false .. Я ищу цикл массива здесь ..
  • 0
    Какой предикат вы хотите? Каждый элемент, чей updated массив содержит false upStatus es?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню