08.编码顺序和字典顺序
小于 1 分钟
API
- sort()
- 参数:a-b < 0:正序,a-b > 0:逆序
- 返回值:经过排序的原始数组的引用。注意数组是就地排序的,不会进行复制。
- localeCompare()
- 语法:a.localeCompare('b')
- 参数:a>b:返回值是1,a<b:返回值是-1,a=b:返回值是0
警告: 切勿依赖于 -1或 1这样特定的返回值。
不同浏览器之间(以及不同浏览器版本之间)返回的正负数的值各有不同,因为 W3C 规范中只要求返回值是正值和负值,而没有规定具体的值。一些浏览器可能返回 -2 或 2 或一些其他的负、正值。
排序
<div class="names"></div>
<div class="coding"></div>
<div class="dictionary"></div>
const demo ={
names:document.querySelector('.names'),
coding:document.querySelector('.coding'),
dictionary:document.querySelector('.dictionary')
}
const names = ['郭', '岳', '孙', '曹', '刘'];
demo.names.innerHTML =`原始顺序:${names}`
let coding = [...names]
let dictionary = [...names]
//编码顺序
demo.coding.innerHTML =`编码排序:${coding.sort()}`
const r1 = '刘'.charCodeAt(0)//21016
const r2 = '曹'.charCodeAt(0)//26361
//字典顺序
const r3 = '刘'.localeCompare('曹')//1
demo.dictionary.innerHTML = `字典排序:${dictionary.sort((a, b) => a.localeCompare(b))}`