带条件的Java排序给出了乱序的结果

威能

在开始之前,我已经看了很多帖子,但是我不知道如何解决这个问题。我有一个要按以下条件排序的数组,我想要与顶部的tablePrefix匹配的任何数组项。当数组中的项目数为10或少于10时,它的作用就像一个超级按钮,但当数组为11或更多时,该函数将开始给出错误的排序顺序。

var tablePrefix = 'es_officer';

columns = [
           "es_officer_id", // 0
           "es_officer_name", // 1
           "es_officer_fname", // 2
           "es_officer_dob", // 3
           "es_officer_apply_status", // 4
           "es_employment_type_id", // 5
           "es_employment_type_name", // 6
           "es_designation_id", // 7
           "es_designation_title", // 8
           "es_service_type_id", // 9
           "es_service_type_name", // 10 
           "es_bps_id", // 11
           "es_bps_title" // 12
          ];

columns.sort((a, b) => a.indexOf(tablePrefix) ? a.localeCompare(b) : -1);

console.log(columns);

数组中有12个项目的结果

[
  "es_officer_id",
  "es_officer_fname",
  "es_officer_dob",
  "es_officer_apply_status",
  "es_bps_id",
  "es_officer_name", // Unordered result, this should be above es_bps_id
  "es_bps_title",
  "es_designation_id",
  "es_designation_title",
  "es_employment_type_id",
  "es_employment_type_name",
  "es_service_type_id",
  "es_service_type_name"
]

但是如果删除任何两个项目并将columns数组中的项目数减少到10个,则效果很好。例如删除9和10。

数组中有10个项目的结果

[
  "es_officer_id",
  "es_officer_fname",
  "es_officer_dob",
  "es_officer_apply_status",
  "es_officer_name", // In right order 
  "es_bps_id",
  "es_bps_title",
  "es_designation_id",
  "es_designation_title",
  "es_employment_type_id",
  "es_employment_type_name"
]

任何人 ??帮助将不胜感激。

6502

排序算法假定总的一致顺序。这意味着a < b都不可能同时存在b < a,但这就是当您比较两个与前缀匹配的元素时会发生的情况,因为-1即使交换这些元素,比较函数也会返回

如果您违反了比较功能的算法要求,那么任何事情都可能发生(例如,冒泡排序算法将永远循环)。显然,ECMA标准更为宽容,只是谈论了实现定义的任意排序顺序:在标准实现中不会发生挂起,崩溃或元素重复/删除。

还要注意,如果a匹配,则还需要b在使用之前检查是否也匹配,localCompare如果希望所有匹配都出现之前。

function comp(a, b) {
   if (a.indexOf(prefix)) {
      if (b.indexOf(prefix)) {
          return a.localCompare(b);
      } else {
          return 1;
      }
   } else {
      if (b.indexOf(prefix)) {
          return -1;
      } else {
          return 0; // All prefixed are considered equal
      }
   }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python 列表排序给出了错误的结果

来自分类Dev

我的快速排序实现给出了错误的结果

来自分类Dev

Java子列表的反向顺序给出了错误的结果

来自分类Dev

JMEter给出了奇怪的结果

来自分类Dev

TryGetValue 给出了错误的结果

来自分类Dev

C#实体框架的排序和分页给出了意外的结果

来自分类Dev

C中的插入排序程序给出了奇怪的结果

来自分类Dev

插入排序给出了奇怪的输出

来自分类Dev

return(sizeof(array))给出了意外的结果

来自分类Dev

Julia`remotecall`线程给出了不同的结果

来自分类Dev

char + int给出了意外的结果

来自分类Dev

SQLite查询给出了与MySQL不同的结果

来自分类Dev

Break语句给出了意外结果

来自分类Dev

数组给出了从HTML生成的奇怪结果

来自分类Dev

couchbase Reduce 给出了不想要的结果

来自分类Dev

Python 中的 LinearRegression 给出了错误的结果?

来自分类Dev

哪个节点给出了非常奇怪的结果

来自分类Dev

SimpleDateFormat的.format()给出了Java8不同的结果与切换到java11

来自分类Dev

带空值的SQL多条件查询在搜索中输入的值不给出结果

来自分类Dev

Base64编码在Linux CentOS终端和Java中给出了不同的结果

来自分类Dev

从URL到文件的Java gzip pdf-结果给出了次要字符不匹配的情况

来自分类Dev

带有负数的 Mod 在 Java 和 C 中给出了否定的结果

来自分类Dev

java-最大到最小排序-最大乱序

来自分类Dev

乱序排序选项

来自分类Dev

<Functional>:整数上的plus <long>()给出了意外的结果

来自分类Dev

我从Ruby到JavaScript的翻译给出了不同的结果

来自分类Dev

fprintf 0在Windows MinGW下给出了意外结果

来自分类Dev

numpy.linalg.norm给出了奇怪的结果

来自分类Dev

高于DIV的透明PNG给出了奇怪的结果

Related 相关文章

  1. 1

    Python 列表排序给出了错误的结果

  2. 2

    我的快速排序实现给出了错误的结果

  3. 3

    Java子列表的反向顺序给出了错误的结果

  4. 4

    JMEter给出了奇怪的结果

  5. 5

    TryGetValue 给出了错误的结果

  6. 6

    C#实体框架的排序和分页给出了意外的结果

  7. 7

    C中的插入排序程序给出了奇怪的结果

  8. 8

    插入排序给出了奇怪的输出

  9. 9

    return(sizeof(array))给出了意外的结果

  10. 10

    Julia`remotecall`线程给出了不同的结果

  11. 11

    char + int给出了意外的结果

  12. 12

    SQLite查询给出了与MySQL不同的结果

  13. 13

    Break语句给出了意外结果

  14. 14

    数组给出了从HTML生成的奇怪结果

  15. 15

    couchbase Reduce 给出了不想要的结果

  16. 16

    Python 中的 LinearRegression 给出了错误的结果?

  17. 17

    哪个节点给出了非常奇怪的结果

  18. 18

    SimpleDateFormat的.format()给出了Java8不同的结果与切换到java11

  19. 19

    带空值的SQL多条件查询在搜索中输入的值不给出结果

  20. 20

    Base64编码在Linux CentOS终端和Java中给出了不同的结果

  21. 21

    从URL到文件的Java gzip pdf-结果给出了次要字符不匹配的情况

  22. 22

    带有负数的 Mod 在 Java 和 C 中给出了否定的结果

  23. 23

    java-最大到最小排序-最大乱序

  24. 24

    乱序排序选项

  25. 25

    <Functional>:整数上的plus <long>()给出了意外的结果

  26. 26

    我从Ruby到JavaScript的翻译给出了不同的结果

  27. 27

    fprintf 0在Windows MinGW下给出了意外结果

  28. 28

    numpy.linalg.norm给出了奇怪的结果

  29. 29

    高于DIV的透明PNG给出了奇怪的结果

热门标签

归档