2016-08-10 73 views
3

我有一個像這樣的字符串「is2 Thi1s T4est 3a」,我需要對它進行排序,所以 數組看起來像這樣「Thi1s is2 3a T4est」。數字可以出現在字符串的任何地方。我知道如何按字母順序排序字符串以及如何對數組進行排序,但在這種情況下它是如何完成的?有沒有一種方法可以幫助對數字進行分類而忽略字母? 我一直在努力完成這項任務一段時間,任何幫助將不勝感激!根據子串中的數字對字符串排序

+0

你需要寫一個函數來解析號碼的開出每一個字符串,然後讓他們到自己的完整號碼。 – Trasiva

+0

這是一個字符串數組嗎?我看到一個字符串。 – naomik

+0

是否有保證每個字符串只有一個數字? – TAGraves

回答

9

你可以在空間分割和基於存儲在每個字符串的數值sort

let words = "is2 Thi1s T4est 3a".split(' '); 
 
words.sort((a, b) => a.replace(/[^\d]+/g, '') - b.replace(/[^\d]+/g, '')); 
 
console.log(words.join(' '));

+1

大聲笑我的答案几乎與你的一樣。我給你+1,並刪除我的。 – naomik

2

首先定義一個比較功能。

compare = function(x, y) { 
    return x.match(/\d+/g)[0] - y.match(/\d+/g)[0]; 
} 

然後使用它。

var z = "is2 Thi1s T4est 3a"; 
z.split(" ").sort(compare).join(" "); 
//"Thi1s is2 3a T4est" 

或者如果你喜歡一個線,

z.split(" ").sort(function(x, y){return x.match(/\d+/g)[0] - y.match(/\d+/g)[0];}).join(" ") 
+0

謝謝您的評論! – Alex