对包含长度值

时间:2017-03-08 09:26:29

标签: javascript arrays sorting

我正在尝试使用自动生成的值对数组进行排序,但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 个答案:

答案 0 :(得分:3)

实际上Array#sort没有回调按字符串排序。您需要使用值的delta来按数字排序。

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

您不需要对已排序的数组进行赋值,因为排序可就地工作(就地)。