У меня есть массив объектов, есть значение state
для каждого объекта.Переместить все элементы с определенным значением до конца массива
Я хотел бы заказать массив, чтобы любые объекты obejects с состоянием healthy
или unhealthy
были перенесены в конец массива.
Я хочу сгруппировать все healthy
вместе и все unhealthy
элементов вместе.
var people = [
{
name: 'XXX',
state: 'healthy'
},
{
name: 'XXX',
state: 'other'
},
{
name: 'XXX',
state: 'healthy'
},
{
name: 'XXX',
state: 'dead'
},
{
name: 'XXX',
state: 'unhealthy'
},
{
name: 'XXX',
state: 'healthy'
},
{
name: 'XXX',
state: 'dead'
},
{
name: 'XXX',
state: 'healthy'
},
{
name: 'XXX',
state: 'dead'
},
{
name: 'XXX',
state: 'other'
},
{
name: 'XXX',
state: 'dead'
},
{
name: 'XXX',
state: 'healthy'
}
{
name: 'XXX',
state: 'other'
},
{
name: 'XXX',
state: 'healthy'
},
{
name: 'XXX',
state: 'dead'
},
{
name: 'XXX',
state: 'other'
},
{
name: 'XXX',
state: 'dead'
},
{
name: 'XXX',
state: 'unhealthy'
},
{
name: 'XXX',
state: 'dead'
},
{
name: 'XXX',
state: 'healthy'
}
];
Я хотел бы окончательный массив выглядеть следующим образом:
var people = [
{
name: 'XXX',
state: 'other'
},
{
name: 'XXX',
state: 'dead'
},
{
name: 'XXX',
state: 'dead'
},
{
name: 'XXX',
state: 'dead'
},
{
name: 'XXX',
state: 'other'
},
{
name: 'XXX',
state: 'dead'
},
{
name: 'XXX',
state: 'other'
},
{
name: 'XXX',
state: 'dead'
},
{
name: 'XXX',
state: 'other'
},
{
name: 'XXX',
state: 'dead'
},
{
name: 'XXX',
state: 'dead'
},
{
name: 'XXX',
state: 'healthy'
},
{
name: 'XXX',
state: 'healthy'
},
{
name: 'XXX',
state: 'healthy'
},
{
name: 'XXX',
state: 'healthy'
},
{
name: 'XXX',
state: 'healthy'
},
{
name: 'XXX',
state: 'healthy'
},
{
name: 'XXX',
state: 'healthy'
},
{
name: 'XXX',
state: 'unhealthy'
},
{
name: 'XXX',
state: 'unhealthy'
}
];
Я попытался следующие, но по какой-то причине, некоторые элементы в массиве пропущены.
Я думаю, что, по мере того, как я нажимаю элементы на дно, меняется индекс всех других предметов, и я пропускаю некоторые из них?
_.each(people, function(p){
if(p.state === 'healthy'){
var arr_idx = people.indexOf(p);
people.push(people.splice(arr_idx, 1)[0]);
}
});
_.each(people, function(p){
if(p.state === 'unhealthy'){
var arr_idx = people.indexOf(p);
people.push(people.splice(arr_idx, 1)[0]);
}
});
Спасибо, Нина, очень благодарен. – Daft