当值相同时,在忽略排序中排序

Sort in ignore sort when same value

本文关键字:排序      更新时间:2023-09-26

如果我有一个包含如下对象的数组:

percentages_oparea
0: 
    name: test1
    pvalue: 15
1: 
    name: test2    
    pvalue: 16

我可以这样在 javascript 中对其进行排序:

percentages_oparea.sort(function(a, b) {
    return parseFloat(b.pvalue) - parseFloat(a.pvalue);
});

它工作正常:

percentages_oparea
0: 
    name: test2
    pvalue: 16
1: 
    name: test1    
    pvalue: 15

如果b.value是完全相同的值a.value我不想进行任何排序。 如何实现这一点?

我不知道为什么,但是当 pvalue 中的值完全相同时,我得到这个结果(test1 和 test2 切换索引):

0: 
    name: test2
    pvalue: 15
1: 
    name: test1    
    pvalue: 15

但我想要(什么都不应该改变)

0: 
    name: test1
    pvalue: 15
1: 
    name: test2    
    pvalue: 15

你指的是稳定性,指的是一种排序算法能力,用于维护被认为是相等的项目之间的排序。 并非所有算法都能保证这一点,不幸的是,您使用的算法显然不能。

我建议您查看有关排序算法的文章以获取完整列表。