2015-07-09 3 views
-2

Я хотел бы создать новый массив JSON на основе определенных значений.Удалить некоторые части json-массива

Пример JSON:

var array = 
{ 
    "entries": { 
     "houses": [ 
       { 
       "category": { 
        "category_id":"1", 
        "category_foo":"bar", 
        }, 
        "important": { 
         "important_foo":"bar", 
         "dontforget":"me", 
        } 
       }, 
       { 
       "category": { 
        "category_id":"1", 
        "category_foo":"bar", 
        }, 
        "important": { 
         "important_foo":"bar", 
         "dontforget":"me", 
        } 
       }, 
       "category": { 
        "category_id":"2", 
        "category_foo":"bar", 
        }, 
        "important": { 
         "important_foo":"bar", 
         "dontforget":"me", 
        } 
       } 
      ] 
     } 
} 

Теперь мне нужен способ поиска с помощью этого массива и создать новый массив со всеми houses, которые имеют category с category_id=1. Конечно, он должен хранить всю остальную информацию, такую ​​как important.

Новый массив должен выглядеть следующим образом:

{ 
    "entries": { 
     "houses": [ 
       { 
       "category": { 
        "category_id":"1", 
        "category_foo":"bar", 
        }, 
        "important": { 
         "important_foo":"bar", 
         "dontforget":"me", 
        } 
       }, 
       { 
       "category": { 
        "category_id":"1", 
        "category_foo":"bar", 
        }, 
        "important": { 
         "important_foo":"bar", 
         "dontforget":"me", 
        } 
       } 
      ] 
     } 
} 

Любая помощь приветствуется!

+0

Я думаю, что это поможет, если вы предоставили код на то, что вы пробовали, или по крайней мере мысль о попытке – blackmind

ответ

0

Этот код работает.

var houses = array.entries.houses; 
var newHouses = []; 
for (var i = 0; i < houses.length; i++) 
{ 
    if (houses[i].category.category_id == "1") { 
    newHouses.push(houses[i]); 
    } 
} 

Проверьте это: https://jsfiddle.net/2u13phw3/

+0

это работало для меня! Спасибо! – seanarcher

1

Вы можете использовать Array.filter сделать это:

var filteredResults = array.entries.houses.filter(function(house) { 
    return house.category && house.category_id == 1; 
}); 
+0

выглядит category_id строка. –

+0

@ DanielA.White - Да, должно быть хорошо. '" 1 "== 1' – tymeJV

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