【问题标题】:Sort in javascript - ignore sort when same value [duplicate]在javascript中排序-当值相同时忽略排序[重复]
【发布时间】:2016-02-17 11:49:45
【问题描述】:

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

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.valuea.value 的值完全相同,我不想进行任何排序。如何做到这一点?

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

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

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

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

【问题讨论】:

标签: javascript sorting


【解决方案1】:

您所指的称为稳定性,指的是一种排序算法能够维持被认为相等的项目之间的顺序。并非所有算法都可以保证,不幸的是,您使用的算法显然不能。

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

【讨论】:

猜你喜欢
  • 2017-09-18
  • 2015-07-31
  • 2020-07-09
  • 2011-08-28
  • 1970-01-01
  • 2012-07-16
  • 1970-01-01
  • 2018-07-10
  • 1970-01-01
相关资源
最近更新 更多