按整数列排序未按实际数值大小排列,如何实现正确排序?
按数值而非字符串排序的解决方案
问题出在你的数据里数值是字符串类型,默认排序会按字符串的字符编码顺序比较,所以"100"会排在"2"前面。要实现按实际数值排序,只需在排序时把字符串转为数字再比较:
const data = [ ["A","2"], ["B","100"], ]; // 按数值升序排序 data.sort((a, b) => { // 将字符串转为数字后比较 return Number(a[1]) - Number(b[1]); }); console.log(data); // 输出 [["A","2"], ["B","100"]]
- 如果要降序排序,只需把
Number(a[1]) - Number(b[1])改成Number(b[1]) - Number(a[1]) - 注意:如果数组里存在非数字的字符串,建议先做合法性判断,避免出现NaN导致排序异常
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

