Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何修改虚线单元格名称的排序代码?_Javascript_Sorting - Fatal编程技术网

Javascript 如何修改虚线单元格名称的排序代码?

Javascript 如何修改虚线单元格名称的排序代码?,javascript,sorting,Javascript,Sorting,我之所以使用此代码,是因为: 但我尝试排序的内容要复杂一些: 我有: A1 A3 A5 A14 A6-1 A6-2 我期望: A1 A3 A5 A6-1 A6-2 A14 您可以将其分解为3个排序条件:1按第一个字符2按第二个数字3按破折号后面的可选第三个数字-: 常数arr=['A5','A3','A1','A14','A6-2','A6-1']; const sorted=arr.sorta,b=>{ 常量[[aChar,aN1,aN2],[bChar,bN1,bN2]=[a,b].m

我之所以使用此代码,是因为:

但我尝试排序的内容要复杂一些:

我有:

A1
A3
A5
A14
A6-1
A6-2
我期望:

A1
A3
A5
A6-1
A6-2
A14

您可以将其分解为3个排序条件:1按第一个字符2按第二个数字3按破折号后面的可选第三个数字-:

常数arr=['A5','A3','A1','A14','A6-2','A6-1']; const sorted=arr.sorta,b=>{ 常量[[aChar,aN1,aN2],[bChar,bN1,bN2]=[a,b].mapx=>x.match/[a-Z]|[0-9]+/gi.mapel=>numberrel | | el; const c1=aChar.localeComparebChar; 常数c2=aN1-bN1; 常数c3=aN2 | | 0-bN2 | | 0; 返回c1 | c2 | c3; };
console.logsorted 您可以将其分解为3个排序条件:1按第一个字符2按第二个数字3按破折号后面的可选第三个数字-:

常数arr=['A5','A3','A1','A14','A6-2','A6-1']; const sorted=arr.sorta,b=>{ 常量[[aChar,aN1,aN2],[bChar,bN1,bN2]=[a,b].mapx=>x.match/[a-Z]|[0-9]+/gi.mapel=>numberrel | | el; const c1=aChar.localeComparebChar; 常数c2=aN1-bN1; 常数c3=aN2 | | 0-bN2 | | 0; 返回c1 | c2 | c3; }; console.logsorted 参考并感谢@Leonid Pyrlia,根据您的问题,您也参考了相同的示例, 我们可以通过str.replace/-.*/g删除-和-之后的数字

var reA=/[^a-zA-Z]/g; 变量reN=/[^0-9]/g; var removeDash=/-.*/g; var arr=['A5'、'A3'、'A1'、'A14'、'A6-2'、'A6-1']; console.logarr.sortsortAlphaNum; sortAlphaNuma,b函数{ a=a.replaceremoveDash; b=b.replaceremoveDash; var aA=a.replacereA; var bA=b.replacereA; 如果aA==bA{ var aN=parsenta.replacereN,10; var bN=parseIntb.replacereN,10; 返回aN==bN?0:aN>bN?1:-1; }否则{ 返回aA>bA?1:-1; } } 参考并感谢@Leonid Pyrlia,根据您的问题,您也参考了相同的示例, 我们可以通过str.replace/-.*/g删除-和-之后的数字

var reA=/[^a-zA-Z]/g; 变量reN=/[^0-9]/g; var removeDash=/-.*/g; var arr=['A5'、'A3'、'A1'、'A14'、'A6-2'、'A6-1']; console.logarr.sortsortAlphaNum; sortAlphaNuma,b函数{ a=a.replaceremoveDash; b=b.replaceremoveDash; var aA=a.replacereA; var bA=b.replacereA; 如果aA==bA{ var aN=parsenta.replacereN,10; var bN=parseIntb.replacereN,10; 返回aN==bN?0:aN>bN?1:-1; }否则{ 返回aA>bA?1:-1; }
}我假设你想先按字母排序,然后按第一个数字排序,然后按顺序,按后面的数字排序,以-?还有,最多会有一个,或者可能不止一个吗?没有比我在这里展示的更多的了。更正reA和reN是什么?抱歉,缺少:var reA=/[^A-Z]/g;变量reN=/[^0-9]/g;我没有信誉点来编辑我的邮件。我正确地假设您要先按字母排序,然后按第一个数字排序,然后按顺序按以下数字排序,以-?还有,最多会有一个,或者可能不止一个吗?没有比我在这里展示的更多的了。更正reA和reN是什么?抱歉,缺少:var reA=/[^A-Z]/g;变量reN=/[^0-9]/g;我没有声誉点来编辑我的博文谢谢,但我不明白逻辑,似乎更好,但我更喜欢可读的solution@MévatlavéKraspek'A6-1'。match/[A-Z]|[0-9]+/gi.mapel=>numberrel | | el这将把字符串A6-1转换成数组['A',6,1],或将'A1'转换成['A',1]这部分[[aChar aN1,aN2],[bChar bN1 bN2]]是一个ES6数组分解分配。在我们的比较函数中,如果a是A6-1,b是A1,那么该赋值允许我们在线声明这些变量,考虑到上述所有,[[aChar,aN1,aN2],[bChar,bN1,bN2]=[[a',6,1],[a',1]],aChar将等于a,bChar-a,aN1-6,bN1,aN2-1,bN2-未定义,因为dashAll之后没有第三个数字,这允许我们将其分解为单独的标准:对于字符比较,我们使用localeCompare;对于数字-简单的减法谢谢,但我不懂逻辑,似乎更好,但我更喜欢可读的solution@MévatlavéKraspek'A6-1'。match/[A-Z]|[0-9]+/gi.mapel=>numberrel | | el这将把字符串A6-1转换成数组['A',6,1],或将'A1'转换成['A',1]这部分[[aChar aN1,aN2],[bChar bN1 bN2]]是一个ES6数组分解分配。在我们的比较函数中,如果a是A6-1,b是A1,那么该赋值允许我们在线声明这些变量,考虑到上述所有,[[aChar,aN1,aN2],[bChar,bN1,bN2]=[[a',6,1],[a',1]],aChar将等于a,bChar-a,aN1-6,bN1,aN2-1,bN2-未定义,因为dashAll之后没有第三个数字,这允许我们将其分解为单独的标准:对于字符比较,我们使用localeCompare;对于数字-简单减法
A1
A3
A5
A6-1
A6-2
A14