我正在尝试使用自动生成的值对数组进行排序,但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);
答案 0 :(得分:3)
实际上Array#sort
没有回调按字符串排序。您需要使用值的delta来按数字排序。
array_lengths.sort(function (a, b) {
return a - b;
});
您不需要对已排序的数组进行赋值,因为排序可就地工作(就地)。