树状结构数据按照顺序排序

简介: 树状结构数据按照顺序排序

这里写两种实现,一种java,一种js

首先是js的

const list = [
  {titleNum: '1.1.1'}, 
  {titleNum: '1'},
  {titleNum: '10'},  
  {titleNum: '2'}
];
list.sort((a, b) => {
  const aLevels = a.titleNum.split('.').map(i => parseInt(i));
  const bLevels = b.titleNum.split('.').map(i => parseInt(i));
  const minLength = Math.min(aLevels.length, bLevels.length);
  for (let i = 0; i < minLength; i++) {
    if (aLevels[i] !== bLevels[i]) {
      return aLevels[i] - bLevels[i];
    } 
  }
  return aLevels.length - bLevels.length; 
});
console.log(list);

其次是java的:

Collections.sort(list,new Comparator<Chatr>(){
  @Override
  public int compare(Chatr o1,Chatr o2){
    String[] levels1=o1.getTitleNum().split("\\.");
    String[] levels2=o2.getTitleNum().split("\\.");
    int idx=0;
    while(idx<levels1.length && idx<levels2.length){
      int level1=Integer.parseInt(levels1[idx]);
      int level2=Integer.parseInt(levels2[idx]);
      if(level1 != level2){
        return Integer.compare(level1,level2);
      }
      idx ++;
    }
    return Integer.compare(levels1.length,levels2.length);
  }
});

以上。

目录
打赏
0
0
0
0
5
分享
相关文章
【开源组件】- 表格处理 - Luckysheet
使用Luckysheet实现前端从服务器中获取excel文件,通过luckysheet插件在线编辑,完成后将此文件传送到服务器保存。
1928 0
【开源组件】- 表格处理 - Luckysheet
如何处理 h5 使用 iframe 嵌套页面,内外 viewport 不一致导致的缩放问题?
如何处理 h5 使用 iframe 嵌套页面,内外 viewport 不一致导致的缩放问题?
1919 0
webpack 使用打包报错 ERROR in node_modules\@types\node\ts4.8\assert.d.ts
webpack 使用打包报错 ERROR in node_modules\@types\node\ts4.8\assert.d.ts
902 1
vue项目 git上传忽略node_modules和dist
vue项目 git上传忽略node_modules和dist
1011 0
android MVP契约类架构模式与MVVM架构模式,哪种架构模式更好?
android MVP契约类架构模式与MVVM架构模式,哪种架构模式更好?
239 0
Vue路由params、query参数丢失解决
该文章介绍了在Vue中使用`params`和`query`进行路由参数传递时,如何通过`sessionStorage`或`localStorage`解决参数丢失的问题。
339 2
动态组件化的优缺点是什么
【9月更文挑战第2天】动态组件化的优缺点是什么
173 5
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问