大家排序所遇见的问题
普通的一个数组排序,乱序是我123456789、10[5,3,1,6,2,4,7,9,8,10,11]
如果直接用sort会导致,他会将你的10当成了1.0
,1.1
[1,10,11,2,3,4,5,6,7,8,9]
以下我遇见的三个问题
数据排序就是传统的sort
这里的形参我用成了a和z,让开始不懂的人认为是字母排列
var a = [2,1,4,3,11]
a.sort(function(a,z){
return a-z//或者z-a
})
console.log(a)
//1,2,3,4,11
但是你发现名称加上中文就完了:蜡笔小新1,蜡笔小新3,蜡笔小新2
解决方法:使用localeCompare
var a = ["蜡笔小新1","蜡笔小新3","蜡笔小新4","蜡笔小新2"]
a.sort(function(a, b) {
return a.localeCompare(b)
})
console.log(a)
但是你知道吗?名称必须加0才可以。比如01,02,03
如果不加会导致和第一个问题一样[1,10,11,2,3]
汉字,并且无需加0
因为汉字排序就跟曾经的1,100,2,3,4,5
一样了
通过思否的朋友的帮助,最后选择了Intl
这是最快的解决方案
var a = ["龙珠6","龙珠2","龙珠8","龙珠3","龙珠1","龙珠4","龙珠10"]
const collator = new Intl.Collator(undefined, { numeric: true });
a.sort(collator.compare);
console.log(a)
如果想详细查看,下面就是了
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Refer...
或者
http://www.verydoc.net/javascript/00004732.html
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。