Javascript 排序和排序

标签 javascript sorting

所以我有这个数组

[ 'vendor/angular/angular.min.js',
  'vendor/angular-nice-bar/dist/js/angular-nice-bar.min.js',
  'vendor/angular-material/modules/js/core/core.min.js',
  'vendor/angular-material/modules/js/backdrop/backdrop.min.js',
  'vendor/angular-material/modules/js/dialog/dialog.min.js',
  'vendor/angular-material/modules/js/button/button.min.js',
  'vendor/angular-material/modules/js/icon/icon.min.js',
  'vendor/angular-material/modules/js/tabs/tabs.min.js',
  'vendor/angular-material/modules/js/content/content.min.js',
  'vendor/angular-material/modules/js/toolbar/toolbar.min.js',
  'vendor/angular-material/modules/js/input/input.min.js',
  'vendor/angular-material/modules/js/divider/divider.min.js',
  'vendor/angular-material/modules/js/menu/menu.min.js',
  'vendor/angular-material/modules/js/select/select.min.js',
  'vendor/angular-material/modules/js/radioButton/radioButton.min.js',
  'vendor/angular-material/modules/js/checkbox/checkbox.min.js',
  'vendor/angular-material/modules/js/switch/switch.min.js',
  'vendor/angular-material/modules/js/tooltip/tooltip.min.js',
  'vendor/angular-material/modules/js/toast/toast.min.js',
  'vendor/angular-clipboard/angular-clipboard.js',
  'vendor/angular-animate/angular-animate.min.js',
  'vendor/angular-aria/angular-aria.min.js',
  'vendor/angular-messages/angular-messages.min.js',
  'vendor/angular-ui-router/release/angular-ui-router.js',
  'src/app/about/about.js',
  'src/app/hekate.cfg.js',
  'src/app/hekate.ctrl.js',
  'src/app/hekate.module.js',
  'src/app/home/home.js',
  'src/app/user/dialog/user.signIn.ctrl.js',
  'src/app/user/dialog/user.signIn.module.js',
  'src/app/user/user.cfg.js',
  'src/app/user/user.ctrl.js',
  'src/app/user/user.module.js',
  'src/common/services/toast.service.js',
  'templates-common.js',
  'templates-app.js'
]

并以上述数组中的以下部分为例:

[ 
  'src/app/hekate.cfg.js',
  'src/app/hekate.ctrl.js',
  'src/app/hekate.module.js',
]

我想这样排序

[ 
  'src/app/hekate.module.js',
  'src/app/hekate.cfg.js',
  'src/app/hekate.ctrl.js',
]

所以我想要的更具体的是在那个字符串重复的数组中找到并在检查结束后是否有 [.cfg.js, .ctrl.js, .module.js] 并自动将它们排序为 [ .module.js, .cfg.js, .ctrl.js]

有人可以帮我吗?

最佳答案

单一排序建议。

var array = ['src/app/about/about.js', 'src/app/hekate.cfg.js', 'src/app/hekate.ctrl.js', 'src/app/hekate.module.js', 'src/app/home/home.js', 'src/app/user/dialog/user.signIn.ctrl.js', 'src/app/user/dialog/user.signIn.module.js', 'src/app/user/user.cfg.js', 'src/app/user/user.ctrl.js', 'src/app/user/user.module.js'];

array.sort(function (a, b) {
    function replaceCB(r, a, i) { return r.replace(a, i); }

    var replace = ['.module.js', '.cfg.js', '.ctrl.js'];            
    return replace.reduce(replaceCB, a).localeCompare(replace.reduce(replaceCB, b));
});

document.write('<pre>' + JSON.stringify(array, 0, 4) + '</pre>');

为了防止太多替换,我建议看看 sorting with map .

关于Javascript 排序和排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36888773/

相关文章:

javascript - 尝试将远程图像转换为 base64 数据的 CORS 错误

javascript - (Jquery) 单击 div 使用 css 转换扩展

javascript - 如何强制 console.log 始终在字符串周围打印引号

javascript - 如何使用 javascript 在表单中只接受 15 个字符?

javascript - Highcharts - 如何为数据标签设置textShadow

javascript - MongoDB:过滤文档中的多个数组,然后将重复的数组返回为一个数据

c++ - 如何设计基于两个指标的排序算法?

c++ - 如何定义自定义比较函数以根据一维数组排序对矩阵进行排序

c++ - 快排算法问题

python - 根据列表中的多个元素对列表进行排序