2017-03-08 5 views
1

自動的に生成された値で配列をソートしようとしていますが、JSは私に奇妙な結果を与えます(console.logは[14,2,3,7,9])。 [2、3、7、9、14]を取得するにはどうすればよいですか?長さの値を含む配列を並べ替える

let text ="Why so serious? Mathematicians shouldn't!"; 

// clean text 
let cleaned_text_1 = text.replace(/[.,?!()]/g,""); 
let cleaned_text_2 = cleaned_text_1.replace(/-/g," "); 

// split text 
let cleaned_text = cleaned_text_2.split(/\s/); 

// create the length array 
let array_lengths = []; 
cleaned_text.forEach(function(d){ 
    array_lengths.push(d.length) 
}); 

// sort the array 
sorted_array = array_lengths.sort(); 
console.log(sorted_array); 
+1

'sort'は文字列として比較します。数値を比較するソート関数を記述する必要があります。 –

+1

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/sort –

答えて

3

Array#sort実際には、コールバックを文字列でソートしません。値のデルタを使用して数値でソートする必要があります。

array_lengths.sort(function (a, b) { 
    return a - b; 
}); 

ソートは、(その場で)その場で動作するため、あなたは、ソートされた配列のない割り当てを必要としません。

関連する問題