簡體   English   中英

JS排序數組,包含字符串和字符串數字

[英]JS sort array with strings&string numbers

我正在嘗試使用自定義值對數組進行排序,通過它的整數值。 有我的陣列:

[ '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];
            }

          }

輸出:

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

我建議使用Array.prototype.sort()

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;
});

輸出["a>46", "h>78", "a>86"]


如果你想了解更多關於它是如何實際工作的,我建議你查看compare函數示例https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

基本上:如果你返回零,那么ab是相等的。 如果你返回一個負數,表示a小於b 如果你返回一個正數,表示a大於b

要實現預期的reult,請使用下面的使用數組排序功能的選項

 var array = [ 'a>46', 'a>86', 'h>78' ] console.log(array.sort((a,b) => a.substring(2) - b.substring(2))); 

https://codepen.io/nagasai/pen/eLdYKz?editors=1010

JavaScript附帶了一個內置的方法來排序數組。

 const array = [ '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); return a - b; }); console.log(array); 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects /數量/ parseInt函數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM