gpt4 book ai didi

javascript - 如何确保稳定的 array.sort() 顺序,javascript

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:15:11 26 4
gpt4 key购买 nike

如何确保所有浏览器的 .sort() 顺序稳定? JavaScript

我有一个对象数组,例如

[{
thing: 'walker',
value: 1
},
{
thing: 'texas',
value: 2
},
{
thing: 'ranger',
value: 2
}]

在对数组进行排序时,我使用以下方法对它们进行交替升序/降序排序:

 _sortNumber (key, dir) {
return function(a, b) {
if (dir) {
// sort descending
return b[key] - a[key];
}
else {
// sort ascending
return a[key] - b[key];
}
}
};

array.sort(this._sortNumber('value', Boolean));

但是,texasranger 的顺序似乎是随机变化的。我相信由于它们是相同的数字,但是,我希望它是一致的。

我怎样才能确保一致性;或者按次要值排序(例如 thing 按字母顺序排列),以确保我始终获得相同的排序结果?

最佳答案

由于无论如何您都在编写自己的排序函数,因此您只需定义值相等时的逻辑即可。

_sortNumber (key, dir) {
return function(a, b) {
if (dir) {
// sort descending
if( a[key] !== b[key])
{
return b[key] - a[key];
} else { //They are same.. sort by something else
if (a.thing < b.thing){
return 1;
}else if (a.thing > b.thing){
return -1;
}else{
return 0;
}
}
else {
// sort ascending
if( a[key] !== b[key])
{
return a[key] - b[key];
} else {
if (a.thing < b.thing){
return -1;
}else if (a.thing > b.thing){
return 1;
}else{
return 0;
}
}
}
}
};

关于javascript - 如何确保稳定的 array.sort() 顺序,javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43005455/

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