Я столкнулся с небольшой проблемой фильтрации данных во вложенном динамическом массиве json. Может кто-нибудь, пожалуйста, помогите мне решить мою проблему ..
var data = {
"root": {
"children": [{
"name": "Concept Phase",
"order": [{
"startTime": "20150101000000",
"endTime": "20150125000000"
}]
},
{
"name": "Design Phase",
"order": [{
"startTime": "2015012500000",
"endTime": "20150311000000"
}]
},
{
"name": "Validation Phase",
"order": [{
"startTime": "2015031100000",
"endTime": "20150430000000"
}]
},
{
"name": "Production Preparation",
"order": [{
"startTime": "2015043000000",
"endTime": "20150612000000"
}]
}
]
}
}
Выше json объекты могут динамически увеличиваться. Теперь я пытаюсь отфильтровать JSON, передав несколько объектов (name,startTime,endTime
). Ниже приведен код, который я пытаюсь ..
var filterBy = {
name: ["Concept Phase"],
startTime:["20150101000000"],
endTime: ["20150125000000"]
};
var result = data.root.children.filter(function (o) {
return Object.keys(filterBy).every(function (k) {
return filterBy[k].some(function (f) {
return o[k] === f;
});
});
});
Над кодом будет работать, если я передам только name
. Потому что я фильтрую только до children
. Как я могу отфильтровать свойства, доступные в order
?
Для вышеупомянутого JSON мне нужно передать name,startTime, endTime
. И ожидаемый результат должен выглядеть следующим образом ..
data = {
"root": {
"children": [{
"name": "Concept Phase",
"order": [{
"startTime": "20150101000000",
"endTime": "20150125000000"
}]
}
]
}
}
Может кто-нибудь помочь мне решить проблему?
Заранее спасибо ..