2016-08-10 14 views
3

"is2 Thi1s T4est 3a"のような文字列があるので、ソートする必要があります。 配列は "Thi1s is2 3a T4est"のようになります。数字は文字列のどこにでも表示できます。文字列をアルファベット順に並び替える方法と配列の並べ替え方法は分かっていますが、この場合はどうしたらいいですか?手紙を無視して数値的に並べ替えるのに役立つ方法はありますか? 私はしばらくの間このタスクを達成しようとしていますが、どんな助けもありがとう!部分文字列の番号に応じて文字列をソート

+0

を好む場合は、各文字列から数字を解析する関数を記述して、自分の完全な番号にそれらを作るために必要があると思います。 – Trasiva

+0

それはどのように文字列の配列ですか?私は1つの文字列を見る。 – naomik

+0

各文字列に1つの数字だけが含まれるという保証はありますか? – 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" 

それとも、1行、

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

コメントありがとうございます! – Alex

関連する問題