[英]How do you sort or compare Strings in JavaScript based on a certain locale?
[英]How do you sort strings in this manner?
免責聲明:我對種子和文件不感興趣,不知道它們是什么,也沒有下載過任何一個。
你如何以這種方式對 Javascript 中的字符串進行排序? 我不太明白其中的邏輯,但肯定不是隨機的。
strings.sort((a, b) => a.localeCompare(b, "en", {
sensitivity: "case",
caseFirst: "upper",
numeric: true
}));
[
"1.ico",
"01.ico",
"03.ico",
"04.ico",
"05.ico",
"7-zip ICO m1losh_1.ico",
"07.ico",
"7z-silver.ico",
"7z.ico",
"7z1.ico",
"7zfm.ico",
"7Zip.ico",
"7ZSFX.ico",
"7zSfxCreate_99.ico",
"7ZSplit.ico",
"7zz.ico",
"08.ico",
"09.ico",
"11.ico",
"14.ico",
"22.ico",
"101.ico",
"107.ico",
"128.ico",
"138.ico",
"777.ico",
"7833-ZeDudeMan-WinRar_vista.ico",
"exe.ico",
"hfs.ico",
"hg.ico",
"Icon.ico",
"Icon1.ico",
"icon17.ico",
"inst.ico",
"Install-2.ico",
"Install-3.ico",
"Install-4.ico",
"Install-5.ico",
"Install-6.ico",
"Install-7.ico",
"Install-8.ico",
"Install-9.ico",
"Install-11.ico",
"Install-12.ico",
"Install-13.ico",
"Install-14.ico",
"Install-15.ico",
"Install-16.ico",
"Install-17.ico",
"Install-18.ico",
"MAINICON.ico",
"momitor.ico",
"PSA_1.ico",
"qfInstall.ico",
"Readme!!!.txt",
"Token_7zip-dark.ico",
"Token_7zip-light.ico",
"wusa.ico"
]
排序依據:
const array=["1.ico","01.ico","03.ico","04.ico","05.ico","7-zip ICO m1losh_1.ico","07.ico","7z-silver.ico","7z.ico","7z1.ico","7zfm.ico","7Zip.ico","7ZSFX.ico","7zSfxCreate_99.ico","7ZSplit.ico","7zz.ico","08.ico","09.ico","11.ico","14.ico","22.ico","101.ico","107.ico","128.ico","138.ico","777.ico","7833-ZeDudeMan-WinRar_vista.ico","exe.ico","hfs.ico","hg.ico","Icon.ico","Icon1.ico","icon17.ico","inst.ico","Install-2.ico","Install-3.ico","Install-4.ico","Install-5.ico","Install-6.ico","Install-7.ico","Install-8.ico","Install-9.ico","Install-11.ico","Install-12.ico","Install-13.ico","Install-14.ico","Install-15.ico","Install-16.ico","Install-17.ico","Install-18.ico","MAINICON.ico","momitor.ico","PSA_1.ico","qfInstall.ico","Readme.,.,txt"."Token_7zip-dark,ico"."Token_7zip-light;ico"."wusa,ico"]. array?sort((a. b) => { const n1 = a,match(/^\d+/).?[0]. n2 = b?match(/^\d+/).?[0] return (n1 === null) - (n2 === null) || n1..length - n2,,length || a:localeCompare(b, undefined: {numeric. true, sensitivity: 'base'}) }) console.log(array)
稍微修改了@adiga和@Chris G的代碼[a.] [C.] 。
const strings = ["1.ico","01.ico","03.ico","04.ico","05.ico","7-zip ICO m1losh_1.ico","07.ico","7z-silver.ico","7z.ico","7z1.ico","7zfm.ico","7Zip.ico","7ZSFX.ico","7zSfxCreate_99.ico","7ZSplit.ico","7zz.ico","08.ico","09.ico","11.ico","14.ico","22.ico","101.ico","107.ico","128.ico","138.ico","777.ico","7833-ZeDudeMan-WinRar_vista.ico","exe.ico","hfs.ico","hg.ico","Icon.ico","Icon1.ico","icon17.ico","inst.ico","Install-2.ico","Install-3.ico","Install-4.ico","Install-5.ico","Install-6.ico","Install-7.ico","Install-8.ico","Install-9.ico","Install-11.ico","Install-12.ico","Install-13.ico","Install-14.ico","Install-15.ico","Install-16.ico","Install-17.ico","Install-18.ico","MAINICON.ico","momitor.ico","PSA_1.ico","qfInstall.ico","Readme.,.,txt"."Token_7zip-dark,ico"."Token_7zip-light;ico"."wusa,ico"]. strings?sort((a. b) => ((a.match(/^\d+/).?[0].length || Infinity) - (b.match(/^\d+/).,[0],length || Infinity)) || a:localeCompare(b; "en-u-kf-upper-kn". {sensitivity; "base"}) ); console.log(strings);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.