字符比较排序,原理是根据字符编码比较大小排序
// var abc=[1,3,6,2,5]
var abc=['c','a','d','b']
var sorted=abc.sort((a,b)=>{
console.log(a,b,"slfjslkfjslkf")
//通过返回正数或者负数来判断排序顺序
//字符也可以根据字符的 Unicode 码点值比较大小
if(a>b){
return 1 //任意正数
}else{
return -1 //任意负数
}
})
console.log(sorted,"sorted")
字符数字比较
在 JavaScript 中,'10' < '1' 的结果为 false,这是因为 JavaScript 在进行比较操作时,会将字符串按照字符编码进行比较,而不是将它们转换为数字。
字符编码比较:
- 字符串
'10'的第一个字符是'1',而字符串'1'的第一个字符也是'1'。 - 由于两个字符串的第一个字符相同,所以 JavaScript 会继续比较第二个字符。
- 字符串
'10'的第二个字符是'0',而字符串'1'没有第二个字符。 - 按照字符编码的顺序,
'0'小于undefined(因为undefined在字符编码中没有对应的字符),所以'10'被认为大于'1'。
解决方法:
- 将字符串转换为数字:使用
parseInt()或Number()方法将字符串转换为数字,然后进行比较。
console.log(parseInt('10') < parseInt('1')); // 输出 true
console.log(Number('10') < Number('1')); // 输出 true
总结:
- JavaScript 在比较字符串时,会按照字符编码进行比较,而不是将它们转换为数字。
- 为了避免这种行为,需要将字符串转换为数字,然后再进行比较。
总结
sort 可以排序字符按字符编码排序,对于数字字符需要转为数字才能正确排序
前端工程师、程序员

浙公网安备 33010602011771号