簡體   English   中英

如何按javascript中的最后一個數字字符對文本數組進行排序

[英]how do I sort a array of text by the last numberic character in javascript

我有一系列文本,例如this [building2, building1 , building3, building5, building4]

如何按最后一個數字字符對該數組進行排序,因此排序后的數組將為building1, building2, building3, building4, building5, building6

var array = ["building200", "building10", "building3", "building5", "building4"];

array.sort(function(a, b){
  var char1 = a.substr(a.search(/\d+$/));  // get the last numbers
  var char2 = b.substr(b.search(/\d+$/));   // get the last numbers
  return parseInt(char1) - parseInt(char2); // sort by parsing to number
});

alert(array); // ["building3", "building4", "building5", "building10", "building200"]

a.search(/\\d/)將返回遇到的第一個數字的索引,而a.substr(that_index)將從a.substr(that_index)切割字符串直到結尾。

如果數組具有長度不均勻的字符串(例如["buildingsss2", "buildisng1", "building3", "building5", "builsding4"]

希望有幫助!

您可以使用正則表達式\\d+來獲取所有連續數字,然后通過將一個元素與另一個元素相減來比較兩個元素,如下所示

var data = [ 'building2', 'building10', 'building3', 'building5', 'building4' ];

data.sort(function(first, second) {
    return /\d+/.exec(first)[0] - /\d+/.exec(second)[0];
});

console.log(data);

輸出量

[ 'building2', 'building3', 'building4', 'building5', 'building10' ]

注意:這比到目前為止發布的其他解決方案要好,因為即使數字大於9,也可以正常工作。

使用.sort()方法

var a = ['building2', 'building1' , 'building3', 'building5', 'building4'];
console.log(a.sort());

輸出量

["building1", "building2", "building3", "building4", "building5"] 

不需要自定義功能

Array.sort ,使用:

['building2', 'building1', 'building3', 'building5', 'building4']. 
  sort(function(a,b){
         return +( /\d{1,}$/.exec(a) || [0] )[0] - 
                +( /\d{1,}$/.exec(a) || [0] )[0]; 
       }
  );

這樣,您還可以對10多個建築物進行排序,例如
['building1', 'building12', 'building302', 'building205', 'building400']
並包含不以數字結尾的字符串

暫無
暫無

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

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