2016-03-03 2 views
0

Учитывая структуру данных, например так:Фильтрация JSON с подчеркиванием

"items": 
     { 
     "Groups":[ 
      { 
       "title":"group 1", 
       "SubGroups":[ 
        { 
        "title":"sub1", 
        "id" : "1", 
        "items":[ 
         { 
          "title":"Ajax request 1", 
         }, 
         { 
          "title":"Ajax request 2", 
         } 
        ] 
        }, 
        { 
        "title":"sub2", 
        "id" : "2", 
        "items":[ 
         { 
          "title":"Ajax request 3", 
         }, 
         { 
          "title":"Ajax request 4", 
         } 
        ] 
        } 
       ] 
      } 
     ] 

Как я могу вытащить все пункты для подгруппы на основе идентификатора? Ive трейд используя найти так:

var res1 = _.where(listing.items,{id:"2"}); 

но получить пустой массив, возвращаемый

Благодарности

+3

ли разобраны вы свой 'JSON' первым? Вы не можете использовать подчеркивание непосредственно на 'JSON', но на объектах javascript – cl3m

+0

Привет, да его уже объект javascript – DavidB

+1

Вам нужен гораздо более глубокий поиск, чем – charlietfl

ответ

2

Попробуйте настроить таргетинг на массив подгруппы, а затем искать идентификатор вы хотите там. Затем он должен вернуть свойства для этой подгруппы.

var obj = { 
    "Groups": [{ 
     "title": "group 1", 
     "SubGroups": [{ 
      "title": "sub1", 
      "id": "1", 
      "items": [{ 
       "title": "Ajax request 1", 
      }, { 
       "title": "Ajax request 2", 
      }] 
     }, { 
      "title": "sub2", 
      "id": "2", 
      "items": [{ 
       "title": "Ajax request 3", 
      }, { 
       "title": "Ajax request 4", 
      }] 
     }] 
    }] 
} 

затем найти значение как этого

_.where(obj.Groups[0].SubGroups, { 
    'id': '2' 
}); 

Просто испытанный и это, кажется, работает

+0

Это большое спасибо, на самом деле будет несколько групп верхнего уровня, которые мне нужно будет искать, как мне искать все группы, а не первый? – DavidB

+1

вы можете перебирать каждую из групп с помощью _.each и искать значения внутри - см. Https://jsfiddle.net/Lcxsqdbm/ – woolm110

+0

спасибо woolm110 - thats perfect – DavidB

Смежные вопросы