JS面试Q&A(续):Javascript数组排序, 默认是字符串Unicode排序, 不适合数字

时间:2023-11-11 00:04:26

Q:下面代码段的执行后data里面的数据是什么?为什么?

var data= [40,1,5,200]

data.sort();

A: data的内容是[1, 200, 40, 5]

因为,Javascript数组排序, 默认是字符串Unicode排序。

如果要按照数值升序排列成: [1,5,40,200], 应该如何修改?

A: 必须提供自己的排序函数, 修改如下:

data.sort(compareNumbers);

function compareNumbers(a, b) {

return a - b;  // 如果是字符串, 先转为 数字, 再减, 如果转化不成功, 则是NaN

}