【问题标题】:Sorting an array of strings by string length and number order [duplicate]按字符串长度和数字顺序对字符串数组进行排序[重复]
【发布时间】:2021-03-16 22:38:44
【问题描述】:

有谁知道如何编写一个按以下方式对数组进行排序的函数的实现:

给定以下数组(随机排序):

["1.2", "1.5.3", "1.5", "1.5.2", "1.4", "1.5.3.2", "1", "1.1", "1.5.3.1", "1.2.1", "1.3", "1.5.1", "2", "2.2", "2.1", "3.1", "3", "3.2.1", "3.2.2", "3.2", "3.3", "4"]

它应该导致 ->

["1", "1.1", "1.2", "1.2.1", "1.3", "1.4", "1.5", "1.5.1", "1.5.2", "1.5.3", "1.5.3.1", "1.5.3.2", "2", "2.1", "2.2", "3", "3.1", "3.2", "3.2.1", "3.2.2", "3.3", "4"]

我目前正在尝试使用 .sort() 在 JavaScript 中执行此操作,但并没有真正成功。任何语言的逻辑将不胜感激。

【问题讨论】:

    标签: javascript arrays sorting logic bubble-sort


    【解决方案1】:

    .sort 实际上在这里就可以正常工作。

    const array = ["1.2", "1.5.3", "1.5", "1.5.2", "1.4", "1.5.3.2", "1", "1.1", "1.5.3.1", "1.2.1", "1.3", "1.5.1", "2", "2.2", "2.1", "3.1", "3", "3.2.1", "3.2.2", "3.2", "3.3", "4"]
    
    console.log(
      array.sort()
    )

    【讨论】:

    • 添加"11.2"作为值
    【解决方案2】:
    const arr = ["1.2", "1.5.3", "1.5", "1.5.2", "1.4", "1.5.3.2", "1", "1.1", "1.5.3.1", "1.2.1", "1.3", "1.5.1", "2", "2.2", "2.1", "3.1", "3", "3.2.1", "3.2.2", "3.2", "3.3", "4"];
    arr.sort();
    

    结果是=

    ["1", "1.1", "1.2", "1.2.1", "1.3", "1.4", "1.5", "1.5.1", "1.5.2", "1.5.3", "1.5.3.1", "1.5.3.2", "2", "2.1", "2.2", "3", "3.1", "3.2", "3.2.1", "3.2.2", "3.3", "4"]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-19
      • 2021-04-05
      • 2016-04-23
      • 1970-01-01
      • 2015-03-16
      • 1970-01-01
      • 2016-02-09
      • 2015-01-16
      相关资源
      最近更新 更多