Вход

Просмотр полной версии : Разделение массива объектов


volodymyrl
25.03.2014, 23:40
Есть массив объектов

[
{
"id": 1,
"type": "internal",
"text": "Text",
"checked":false,
"disabled":false
},
{
"id": 2,
"type": "external",
"text": "Text2",
"checked":true,
"disabled":false
},
{
"id": 3,
"type": "internal",
"text": "Text3",
"checked":false,
"disabled":true
},
{
"id": 4,
"type": "internal",
"text": "Text4444",
"checked":false,
"disabled":false
},
{
"id": 5,
"type": "external",
"text": "Text55555",
"checked":true,
"disabled":true
}
]

Как в цикле разделить его на двухмерный массив по параметру "type". То-есть что бы external и internal были отдельно. Спасибо!

jsnb
26.03.2014, 03:16
И в чем проблема? Делаешь массив в котором элементами будут 2 массива и раскидываешь по ним объекты в зависимости от типа.

Aetae
26.03.2014, 03:34
arr = [
{
"id": 1,
"type": "internal",
"text": "Text",
"checked":false,
"disabled":false
},
{
"id": 2,
"type": "external",
"text": "Text2",
"checked":true,
"disabled":false
},
{
"id": 3,
"type": "internal",
"text": "Text3",
"checked":false,
"disabled":true
},
{
"id": 4,
"type": "internal",
"text": "Text4444",
"checked":false,
"disabled":false
},
{
"id": 5,
"type": "external",
"text": "Text55555",
"checked":true,
"disabled":true
}
];

function diffByType(arr){
var out = [[],[]];
arr.forEach(function(elem){
out[+(elem.type === 'external')].push(elem);
});
return out
}


alert(JSON.stringify(diffByType(arr),null,'\t'))