我有一个对象数组。
const people = [
{
active: true,
hasMoney: false
},
{
active: false,
hasMoney: false
},
{
active: true,
hasMoney: true
}
]
我想按以下顺序对数据进行排序:active: true
-> hasMoney: true
-> active: false
->hasMoney: false
重要提示:如果用户是active === true
和hasMoney === true
,则应在active === true
和之后订购hasMoney === false
我尝试了以下方法,但是没有用。谁有想法?
people
.sort((x, y) =>
x.hasMoney
? Number(x) - Number(y)
: Number(isPersonActive(y)) - Number(isPersonActive(x))
)
您可以采用布尔值的差值,并通过两个属性进行排序,并具有对相同值进行排序的特殊外观。
const people = [{ active: false, hasMoney: true }, { active: true, hasMoney: false }, { active: false, hasMoney: false }, { active: true, hasMoney: true }];
people.sort((a, b) =>
b.active - a.active ||
(a.hasMoney === b.active) - (a.active === b.hasMoney)
);
console.log(people);
.as-console-wrapper { max-height: 100% !important; top: 0; }
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句