[英]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
基本上:如果你返回零,那么a
和b
是相等的。 如果你返回一個負數,表示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)));
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.