HarmonyOS Array.sort排序错误

对数组使用sort方法进行排序,发现排序结果有误。

let newlist =
  [0.48, 1.09, 0.46, 4.21, 2.01, 1.25, 0.06, 1.99, 0.7, 7.57, 3.29, 0.39, 3.51, 5.79, 0.87, 10, 1.51, 1.89, 0.24, 3.03,
    3.77, 1.23, 2.88, 1.02, 2.01, 9.99, 0.15, 0.31, 2.18, 7.55, 1.85, 1.59, 6.78, 0.08, 1.24, 0.09, 2.04, 6.34, 0.67,
    1.48, 0.79, 1.03, 1.98, 1.43, 5.2, 3.06, 1.33, 0.45, 2.9, 1.47, 0.73, 0.32, 0.46, 2.84, 0.2, 0.22, 3.84, 0.13, 1.41,
    1.01, 0, 0.28, 0.64, 2.16, 3.91, 2.95, 4.1, 1.32, 0, 0.63, 4.72, 3.06, 2.12, 1.56, 4.07, 3.55, 0.61, 7.4, 0.48,
    3.66, 1.77, 1.24, 0.05, 0.65, 3.43, 3.12, 1.87, 4.48, 6.3, 4.44, 2.14, 7.56, 1, 4.05, 1.03, 4.64, 2.92, 5.86, 0.25,
    0.15, 0.57, 1.47, 2.14, 0.93, 9.98, 0.13, 0.15, 4.73, 1.56, 1.05, 3.11, 1.98, 0.47, 1.38, 1.49, 1.64, 0.22, 0.71,
    3.39, 1.01, 2.65, 0.15, 2.19, 4.47, 4.71, 2.12, 1.54, 1.22, 2.05, 5.13, 1.1, 0.77, 3.38, 3.68, 1.15, 0.37, 0.42,
    2.12, 0.39, 3.78, 2.77, 0.82, 1.83, 2.43, 3.65, 1, 0.58, 1.61, 3, 0.02, 0.85, 0.2, 3.45, 1.55, 0.09, 0.59, 0.41,
    0.8, 1.02, 2.65, 0.91, 1.11, 1.5, 3.99, 1.13, 2.54, 0.9, 0.36, 4.26, 4.56, 0.32, 4.15, 10.02, 2.85, 2.67, 0.64,
    0.25, 0.36, 3.59, 1.04, 3.17, 2.12, 11.17, 0.62, 0.98, 0.17, 1.9, 2.27, 3.41, 0.78, 0.49, 0.06, 3.32, 2.9, 1.09,
    0.87, 0.93, 0.87, 0.34, 1, 0.47, 2.41, 0.04, 1.79, 4.39, 2.09, 6.98, 4, 2.42, 1.52, 1.03, 0.54, 2.38, 0.19, 3.43,
    1.09]
newlist.sort((a, b) => {
  return b - a
})

排序结果如下:

[11.17, 10.02, 10, 9.99, 9.98, 7.57, 7.56, 7.55, 7.4, 6.98, 6.78, 6.34, 6.3, 5.86, 5.79, 5.2, 5.13, 4.73, 4.72, 4.64,
  4.48, 4.44, 4.21, 4.1, 4.71, 4.07, 4.05, 3.91, 3.84, 3.77, 3.66, 4.56, 4.47, 4.39, 4.26, 4.15, 3.55, 3.51, 3.43, 3.29,
  3.12, 4, 3.99, 3.06, 3.06, 3.03, 2.95, 3.78, 3.68, 2.92, 2.9, 2.88, 3.65, 3.59, 3.45, 3.43, 3.39, 2.84, 3.38, 3.11, 3,
  2.77, 2.65, 2.65, 3.41, 3.32, 3.17, 2.18, 2.16, 2.04, 2.01, 2.9, 2.01, 1.99, 1.98, 1.89, 1.85, 1.59, 1.51, 2.14, 2.14,
  2.12, 1.87, 2.85, 2.43, 1.77, 2.19, 2.12, 2.12, 2.05, 1.98, 1.83, 2.67, 2.54, 1.64, 1.61, 1.56, 1.55, 1.54, 1.49,
  2.42, 2.41, 2.38, 1.48, 1.47, 1.43, 1.33, 2.27, 1.25, 2.12, 1.24, 1.23, 1.03, 1.02, 0.87, 1.56, 1.47, 1.41, 1.32,
  1.24, 0.7, 0.48, 1.09, 0.79, 0.73, 0.67, 0.46, 0.46, 0.45, 1.03, 1.01, 1, 0.93, 0.65, 0.39, 0.32, 0.31, 0.24, 0.15,
  0.09, 0.08, 0.06, 0.64, 0.63, 0.61, 1.38, 1.22, 0.57, 1.15, 1.11, 1.1, 2.09, 1.05, 1.02, 1.01, 1, 0.91, 1.9, 0.85,
  0.82, 0.8, 1.79, 0.77, 1.52, 1.5, 0.48, 0.28, 0.25, 0.2, 0.22, 0.15, 0.15, 0.71, 0.59, 0.13, 0.13, 0.05, 0.58, 0.47,
  0.42, 0.41, 0.39, 0, 0, 0.37, 0.22, 0.2, 1.13, 0.15, 1.09, 1.09, 1.04, 1.03, 1, 0.98, 0.93, 0.9, 0.87, 0.09, 0.02,
  0.87, 0.78, 0.64, 0.62, 0.54, 0.49, 0.47, 0.36, 0.36, 0.34, 0.32, 0.25, 0.19, 0.17, 0.06, 0.04]

其中4.71,4.47,4.39等均不正确。

HarmonyOS
2025-01-09 14:15:09
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
aquaa

可使用以下方式规避:

@Entry
@Component
struct sortPage {
  build() {
    Column() {
      Text('测试')
        .padding(50)
        .onClick(() => {
          let mydataList =
            [0.48, 1.09, 0.46, 4.21, 2.01, 1.25, 0.06, 1.99, 0.7, 7.57, 3.29, 0.39, 3.51, 5.79, 0.87, 10, 1.51, 1.89,
              0.24, 3.03, 3.77, 1.23, 2.88, 1.02, 2.01, 9.99, 0.15, 0.31, 2.18, 7.55, 1.85, 1.59, 6.78, 0.08, 1.24,
              0.09, 2.04, 6.34, 0.67, 1.48, 0.79, 1.03, 1.98, 1.43, 5.2, 3.06, 1.33, 0.45, 2.9, 1.47, 0.73, 0.32, 0.46,
              2.84, 0.2, 0.22, 3.84, 0.13, 1.41, 1.01, 0, 0.28, 0.64, 2.16, 3.91, 2.95, 4.1, 1.32, 0, 0.63, 4.72, 3.06,
              2.12, 1.56, 4.07, 3.55, 0.61, 7.4, 0.48, 3.66, 1.77, 1.24, 0.05, 0.65, 3.43, 3.12, 1.87, 4.48, 6.3, 4.44,
              2.14, 7.56, 1, 4.05, 1.03, 4.64, 2.92, 5.86, 0.25, 0.15, 0.57, 1.47, 2.14, 0.93, 9.98, 0.13, 0.15, 4.73,
              1.56, 1.05, 3.11, 1.98, 0.47, 1.38, 1.49, 1.64, 0.22, 0.71, 3.39, 1.01, 2.65, 0.15, 2.19, 4.47, 4.71,
              2.12, 1.54, 1.22, 2.05, 5.13, 1.1, 0.77, 3.38, 3.68, 1.15, 0.37, 0.42, 2.12, 0.39, 3.78, 2.77, 0.82, 1.83,
              2.43, 3.65, 1, 0.58, 1.61, 3, 0.02, 0.85, 0.2, 3.45, 1.55, 0.09, 0.59, 0.41, 0.8, 1.02, 2.65, 0.91, 1.11,
              1.5, 3.99, 1.13, 2.54, 0.9, 0.36, 4.26, 4.56, 0.32, 4.15, 10.02, 2.85, 2.67, 0.64, 0.25, 0.36, 3.59, 1.04,
              3.17, 2.12, 11.17, 0.62, 0.98, 0.17, 1.9, 2.27, 3.41, 0.78, 0.49, 0.06, 3.32, 2.9, 1.09, 0.87, 0.93, 0.87,
              0.34, 1, 0.47, 2.41, 0.04, 1.79, 4.39, 2.09, 6.98, 4, 2.42, 1.52, 1.03, 0.54, 2.38, 0.19, 3.43, 1.09]
          mydataList.sort((x, y) => {
            if (x < y) {
              return 1;
            } else if (x > y) {
              return -1;
            } else {
              return 0;
            }
          })
          console.info("mydataList:", mydataList)
        })
    }
  }
}
分享
微博
QQ
微信
回复
2025-01-09 17:08:20
相关问题
HarmonyOS Array.sort处理错误
134浏览 • 1回复 待解决
根据list中某项的id如何sort排序
866浏览 • 1回复 待解决
HarmonyOS intl.Collator数字排序错误
349浏览 • 1回复 待解决
HarmonyOS GridRow 实现拖拽排序
231浏览 • 1回复 待解决
DataAbilityHelper怎么排序?
4396浏览 • 1回复 待解决
HarmonyOS List拖动排序示例
520浏览 • 1回复 待解决
HarmonyOS Grid组件拖拽排序
514浏览 • 1回复 待解决
HarmonyOS 数组中对象的排序
513浏览 • 1回复 待解决
HarmonyOS 对象内数组排序问题
407浏览 • 1回复 待解决
HarmonyOS 将json对象按照 ASCII 排序
915浏览 • 1回复 待解决
HarmonyOS 如何实现Listitem的拖拽排序
501浏览 • 1回复 待解决
HarmonyOS array 如何转 arraylist ?
569浏览 • 1回复 待解决
HarmonyOS Array如何转成ArrayBuffer
164浏览 • 1回复 待解决
HarmonyOS Grid拖动排序和长按冲突
982浏览 • 2回复 待解决
拖动实现列表重新排序
1505浏览 • 1回复 待解决
HarmonyOS List组件如何实现拖动重排序
396浏览 • 1回复 待解决