Java进阶教程(一)关键字
2026/1/7 23:10:37
这两者有重要区别:
nums.sort()默认按字符串排序(字典序),即使数组里是数字也会被转换为字符串再比较:
letnums=[100,4,200,1,3,2];nums.sort();// [1, 100, 2, 200, 3, 4]console.log(nums);// 错误的顺序!nums.sort((a, b) => a - b)按数值大小升序排序:
letnums=[100,4,200,1,3,2];nums.sort((a,b)=>a-b);// [1, 2, 3, 4, 100, 200]console.log(nums);// 正确的顺序!lettest1=[100,4,200,1,3,2];console.log(test1.sort());// [1, 100, 2, 200, 3, 4]console.log(test1.sort((a,b)=>a-b));// [1, 2, 3, 4, 100, 200]lettest2=[10,2,1];console.log(test2.sort());// [1, 10, 2]console.log(test2.sort((a,b)=>a-b));// [1, 2, 10]使用nums.sort()会导致错误结果:
functionlongestConsecutiveWrong(nums){nums.sort();console.log("排序后:",nums);// 错误的顺序// 后面的逻辑会得到错误结果// 比如 [100, 4, 200, 1, 3, 2] 排序后是 [1, 100, 2, 200, 3, 4]// 会认为最长连续序列是 1 而不是 4}// 升序排序nums.sort((a,b)=>a-b);// 降序排序nums.sort((a,b)=>b-a);// 按绝对值排序nums.sort((a,b)=>Math.abs(a)-Math.abs(b));// 按字符串长度排序(如果元素是字符串)strings.sort((a,b)=>a.length-b.length);所以对于数字排序,一定要使用sort((a, b) => a - b)而不是默认的sort()。这是 JavaScript 中一个常见的陷阱!