拆分字母数字字符进行排序,然后在javascript中重新连接

拆分字母数字字符进行排序,然后在javascript中重新连接,javascript,Javascript,我正在尝试对一组字母数字字符进行排序,这些字符如下所示: [AD850X, MP342X, OP452X, ZC234X, ZC540X] [850, 342, 452, 234, 540] 排序应该只基于数字,所以我必须从代码中删除所有的字母字符,然后我想在我对这些字符进行排序后,像以前一样将它们添加回代码中。例如,上面的字符串应首先如下所示: [AD850X, MP342X, OP452X, ZC234X, ZC540X] [850, 342, 452, 234, 540] 那么这个

我正在尝试对一组字母数字字符进行排序,这些字符如下所示:

[AD850X, MP342X, OP452X, ZC234X, ZC540X]
[850, 342, 452, 234, 540]
排序应该只基于数字,所以我必须从代码中删除所有的字母字符,然后我想在我对这些字符进行排序后,像以前一样将它们添加回代码中。例如,上面的字符串应首先如下所示:

[AD850X, MP342X, OP452X, ZC234X, ZC540X]
[850, 342, 452, 234, 540]
那么这个,

[234, 342, 452, 540, 850]
然后最后这个,

[ZC234X, MP342X, OP452X, ZC540X, AD850X]
我一直在考虑如何做到这一点,但我不确定如何在排序后将前面的两个字母重新附加到数字代码(最后一个字符,在本例中为“X”,总是相同的,我将在添加前两个字母字符后连接此值,就像以前一样

如果有人能帮我解决这个问题,我将不胜感激

谢谢


编辑:另一个问题,一旦运行,我只想输出数组的低值和高值(可以有不同数量的元素)。我尝试使用.min和.max,但不确定如何在排序后对记录的数组执行此操作。因此,在上述情况下,我只需要“ZC234X”和“AD850X”.

您可以只比较每个元素中匹配的数字对数组进行排序,而不是通过删除前两个字母然后进行排序来使其复杂化

var arr=['AD850X'、'MP342X'、'OP452X'、'ZC234X'、'ZC540X'],
res=arr.sort((a,b)=>a.match(/\d+/)[0]-b.match(/\d+/)[0]),
min=res[0],
max=res[res.length-1];

log(“最小值:+min+”|最大值:+max);
您可以使用对象作为哈希表来存储元素及其编号,然后按该对象的值排序

var数据=['AD850X'、'MP342X'、'OP452X'、'ZC234X'、'ZC540X'];
var obj={}
data.forEach(e=>obj[e]=e.match(/\d+/)[0])
var result=data.sort((a,b)=>obj[a]-obj[b]);

console.log(result)
您可以只使用匹配的数值进行排序。在原地工作

如果正则表达式与数字不匹配,则此建议使用默认值

var数组=['AD850X','MP342X','OP452X','ZC234X','ZC540X'];
array.sort((a,b)=>(a.match(/\d+/)| | 0)-(b.match(/\d+/)| | 0));
log('min value',数组[0]);
log('max value',数组[array.length-1]);
console.log(数组);

.as console wrapper{max height:100%!important;top:0;}
Edit:另一个问题,一旦运行,我只想输出数组的低值和高值(可以有不同数量的元素)。我尝试使用.min和.max,但不确定如何在排序后使用记录的数组。因此,在上述情况下,我只需要“ZC234X”和“AD850X”。感谢您的快速回复!@Nina Scholz没问题
:)