HarmonyOS Array的sort排序方法,在NEXT0.0.31不生效,NEXT0.0.26以及之前都没问题

代码如下:

const Keyboard_ABC: Array<Array<KeyboardItemData>> = [
  [
    new KeyboardItemData(49, '1'),
    new KeyboardItemData(50, '2'),
    new KeyboardItemData(51, '3'),
    new KeyboardItemData(52, '4'),
    new KeyboardItemData(53, '5'),
    new KeyboardItemData(54, '6'),
    new KeyboardItemData(55, '7'),
    new KeyboardItemData(56, '8'),
    new KeyboardItemData(57, '9'),
    new KeyboardItemData(48, '0'),
  ].sort((a, b) => {
    return 0.5 - Math.random();
  }),
HarmonyOS
2025-01-09 16:13:53
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

可参考demo中 toSortSuccess 的排序方式解决排序不生效问题,demo如下:

@Entry
@Component
struct ArraySortPage {
  @State message: string = 'Hello World';

  build() {
    Column() {
      Text(this.message)
        .id('ArraySortPageHelloWorld')
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
        .alignRules({
          center: { anchor: '__container__', align: VerticalAlign.Center },
          middle: { anchor: '__container__', align: HorizontalAlign.Center }
        })
      ArkTsComm()
    }
    .justifyContent(FlexAlign.Center)
    .height('100%')
    .width('100%')
  }
}

@Component
export struct ArkTsComm {
  build() {
    Column() {
      Button() {
        Text('点击排序1')
      }
      .type(ButtonType.Capsule)
      .height(40)
      .width(200)
      .margin({top: 20})
      .onClick(() => {
        let sortClass: SortClass = new SortClass();
        sortClass.toSortFail();
        sortClass.toLog();
      })

      Button() {
        Text('点击排序2')
      }
      .type(ButtonType.Capsule)
      .height(40)
      .width(200)
      .margin({top: 20})
      .onClick(() => {
        let sortClass: SortClass = new SortClass();
        sortClass.toSortSuccess();
        sortClass.toLog();
      })
    }
  }
}

class SortClass {
  private items: string[] = ['9.15', '9.04', '9.10', '9.16', '9.11', '9.17', '9.23', '9.12', '9.18', '9.24', '9.13', '9.19', '9.25', '9.31', '9.20', '9.26', '9.32', '9.21', '9.27', '9.33', '9.22', '9.28', '9.34', '9.40', '8.70', '9.29', '9.35', '9.41', '8.71', '9.30', '9.36', '8.66', '8.72', '9.37', '9.43', '8.67', '9.49', '8.73', '8.79', '9.38', '9.44', '8.68', '8.74', '9.50', '8.80', '9.39', '9.45', '8.69', '8.75', '9.51', '8.81', '9.46', '9.52', '8.76', '8.82', '8.88', '9.47', '9.53', '8.77', '8.83', '8.89', '9.48', '8.78', '9.54', '8.84', '8.90', '9.55', '8.85', '8.91', '8.97', '9.56', '8.86', '8.92', '8.98', '8.87', '8.93', '8.99', '9.05', '8.94', '9.00', '9.06', '8.95', '9.01', '9.07', '8.96', '9.02', '9.08', '9.14', '9.03', '9.09']
  toLog() {
    console.info('SortClass: ' + JSON.stringify(this.items));
  }
  // 目前该方式排序存在问题,在18版本能验证pass
  toSortFail() {
    this.items.sort((m1: string, m2: string) => {
      return Number.parseFloat(m1) - Number.parseFloat(m2);
    })
  }
  // 目前使用该方式排序可以达到预期
  toSortSuccess() {
    let comp: number = 0; this.items.sort((m1: string, m2: string) => {
      comp = Number.parseFloat(m1) - Number.parseFloat(m2);
      return comp > 0 ? 1 : (comp < 0 ? -1 : 0);
    })
  }
}
分享
微博
QQ
微信
回复
2025-01-09 17:44:41
相关问题
HarmonyOS Array.sort排序错误
313浏览 • 1回复 待解决
HarmonyOS 升级Next.0.0.31后权限申请异常
382浏览 • 1回复 待解决
HarmonyOS Array.sort处理错误
135浏览 • 1回复 待解决
根据list中某项id如何sort排序
866浏览 • 1回复 待解决
HarmonyOS margin生效问题
581浏览 • 1回复 待解决
HarmonyOS @Observed生效问题
1020浏览 • 1回复 待解决
HarmonyOS targetSpace生效问题
475浏览 • 1回复 待解决
HarmonyOS 关于onKeyEvent生效问题
913浏览 • 1回复 待解决
HarmonyOS next 压缩问题
783浏览 • 1回复 待解决
有关harmony next问题
564浏览 • 0回复 待解决
嵌套组件中Scroll生效
2405浏览 • 1回复 待解决