У меня есть некоторые данные JSON, в которых я пытаюсь отфильтровать объекты JSON, которые не имеют определенного свойства.
Я могу использовать функцию фильтра из Underscore.JS дляуспешно отфильтровать объекты, которые не имеют правильного свойства.
Однако, когда функция фильтра выполняется, она удаляет ключевое имя объекта.
Вот JSON, которыйиспользуется в переменной data в функции фильтра ниже:
{
"Presentations": {
"Instant": false,
"Daily": false,
"WeeklySummary": false,
"ContentTypeId": 5
},
"Articles": {
"Instant": true,
"Daily": false,
"WeeklySummary": true,
"ContentTypeId": 1
},
"Blogs": {
"Instant": true,
"Daily": false,
"WeeklySummary": true,
"ContentTypeId": 61
},
"NewsBriefs": {
"Instant": false,
"Daily": false,
"WeeklySummary": false,
"ContentTypeId": 2
},
"SpecialInsights": {
"Instant": false,
"Daily": false,
"WeeklySummary": false,
"ContentTypeId": 50
},
"UserSelected": {
"Frequency": null,
"Value": false,
"ContentTypeId": 0
}
}
Вот функция фильтра JavaScript, которая возвращает массив объектов, которые должны включать свойствоиз 'Мгновенное'
newArr = _.filter(data, function(obj){
return obj.hasOwnProperty('Instant')
});
Если я утешаю .log newArr, вот что я получаю:
[
{
"Instant":false,
"Daily":false,
"WeeklySummary":false,
"ContentTypeId":5
},
{
"Instant":true,
"Daily":false,
"WeeklySummary":true,
"ContentTypeId":1
},
{
"Instant":true,
"Daily":false,
"WeeklySummary":true,
"ContentTypeId":61
},
{
"Instant":false,
"Daily":false,
"WeeklySummary":false,
"ContentTypeId":2
},
{
"Instant":false,
"Daily":false,
"WeeklySummary":false,
"ContentTypeId":50
}
]
Как видите, это правильноотфильтровывать объекты, у которых нет свойства Instant
, которое в данном случае является объектом UserSelected
.
Однако в этом процессе я теряю имена ключей объекта, такие как Presentations
и Articles
.
Как сохранить эти имена ключей, когдафильтрация данных JSON?