Javascript 带字符串的JS排序数组&;字符串数

Javascript 带字符串的JS排序数组&;字符串数,javascript,sorting,Javascript,Sorting,我试图用自定义值对数组进行排序,按其整数值排序。 这是我的阵列: [ 'a>46', 'a>86', 'h>78' ] 和期望输出: [ 'a>46', 'h>78', 'a>86' ] 注意:在我的数组中可以找到的最大值是90 我试着这样做: var newarr = []; var max = 91; for (let u = 0; u < array.length; u++) { var nm

我试图用自定义值对数组进行排序,按其整数值排序。 这是我的阵列:

[ 'a>46', 'a>86', 'h>78' ]
和期望输出:

[ 'a>46', 'h>78', 'a>86' ]
注意:在我的数组中可以找到的最大值是90

我试着这样做:

  var newarr = [];
  var max = 91;
          for (let u = 0; u < array.length; u++) {
            var nmbr = parseInt(array[u].replace(/\D/g,'')); // get integer of array element

            if (nmbr < max) {       // if element is lower than current highest value
              max = nmbr;
              newarr[0] = array[u];  // assign it to the beggining of new array
            } else {   // else put it at as the next newarr element

              newarr[newarr.lenght+1] = array[u];
            }

          }
var newarr=[];
var max=91;
for(设u=0;u
输出:

[ 'a>46', <1 empty item>, 'a>86' ]
['a>46','a>86']

JavaScript附带了一个用于排序数组的内置方法

const数组=['a>46','a>86','h>78'];
array.sort((a,b)=>{
a=Number.parseInt(a.replace(/\D/g',),10);
b=Number.parseInt(b.replace(/\D/g',),10);
返回a-b;
});

console.log(数组)我建议使用
Array.prototype.sort()

输出
[“a>46”、“h>78”、“a>86”]


如果你想了解更多关于这是如何工作的,我建议你看看这里的
compare
函数示例


基本上:如果返回零,则
a
b
相等。如果返回负数,则表示
a
小于
b
。如果返回的正数表示
a
大于
b

以达到预期的reult,请使用下面使用数组排序函数的选项

var数组=['a>46','a>86','h>78']

console.log(array.sort((a,b)=>a.substring(2)-b.substring(2))
应该是什么
minutsy
你能添加一个片段吗?请注意,这个答案使用隐式转换,乍一看可能会让人困惑。根据这样的说法,比较是在“>”之后按整数值进行的,使用parseInt也可以,即使不使用它,它也可以工作,因为隐式转换正如你在本著作中提到的,但是替换方法返回“>46”,其中包含<代码> >代码>符号。可能需要考虑这种情况<代码> var数组= [“A2> 46”,“H1>78”,“A0> 86”] < /代码>
var array = ["a>46", "h>78", "a>86"]
array.sort(function(a, b) {
  var number_a = parseInt(a.replace(/\D/g,''));
  var number_b = parseInt(b.replace(/\D/g,''));
  return number_a - number_b;
});