在javascript中排序 - 在相同值时忽略排序

时间:2016-02-17 11:49:46

标签: javascript sorting

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

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

我可以用这种方式对此进行排序:

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

1 个答案:

答案 0 :(得分:1)

您所指的是稳定性,并指的是一种排序算法容量,用于维护被认为相等的项目之间的排序。并非所有算法都能提供这种保证,遗憾的是,您使用的算法显然不具备此功能。

我建议您查看this article regarding sorting algorithms以获取完整列表。