栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

排序数组元素(带数字的字符串),自然排序

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

排序数组元素(带数字的字符串),自然排序

这称为“自然排序”,可以像这样在JS中实现:

function naturalCompare(a, b) {    var ax = [], bx = [];    a.replace(/(d+)|(D+)/g, function(_, $1, $2) { ax.push([$1 || Infinity, $2 || ""]) });    b.replace(/(d+)|(D+)/g, function(_, $1, $2) { bx.push([$1 || Infinity, $2 || ""]) });    while(ax.length && bx.length) {        var an = ax.shift();        var bn = bx.shift();        var nn = (an[0] - bn[0]) || an[1].localeCompare(bn[1]);        if(nn) return nn;    }    return ax.length - bx.length;}/////////////////////////test = [    "img12.png",    "img10.png",    "img2.png",    "img1.png",    "img101.png",    "img101a.png",    "abc10.jpg",    "abc10",    "abc2.jpg",    "20.jpg",    "20",    "abc",    "abc2",    ""];test.sort(naturalCompare)document.write("<pre>" + JSON.stringify(test,0,3));

要以相反的顺序排序,只需交换参数即可:

test.sort(function(a, b) { return naturalCompare(b, a) })

或简单地

test = test.sort(naturalCompare).reverse();


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/432293.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号