gpt4 book ai didi

javascript - 将具有特定值的所有项目移动到数组末尾

转载 作者:行者123 更新时间:2023-11-29 16:46:40 25 4
gpt4 key购买 nike

我有一个对象数组,每个对象都有一个 state 值。

我想对数组进行排序,以便将状态为 healthyunhealthy 的任何对象推到数组的末尾。

我想将所有健康 项目和所有不健康 项目也分组。

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]);
}
});

最佳答案

您可以使用对象进行排序。

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' }];

people.sort(function (a, b) {
var order = { healthy: 1, unhealthy: 2 }; // easy to maintain
return (order[a.state] || 0) - (order[b.state] || 0); // return delta of order
});

console.log(people);

关于javascript - 将具有特定值的所有项目移动到数组末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40219880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com