js sort()函数 排序问题 var arr =['A-1…
2019-01-21 02:39:04来源:博客园 阅读 ()
先介绍个方法
charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。
stringObject.charCodeAt(index)
参数 | 描述 |
---|---|
index | 必需。表示字符串中某个位置的数字,即字符在字符串中的下标。 |
简言之 就是获取字符串第一个字符的Unicode 编码,index说是必填 你不填的话默认为0 即第一位的编码值。
1 var arr = ['A-1-5-1','B-2-3-1','C-4-10-1','A-1-10-2','A-1-5-5'] 2 // console.log(arr) 3 arr.sort(compare); 4 function compare(a,b) { 5 if(a.charCodeAt(0) === b.charCodeAt(0)){ 6 // console.log('a:'+a); 7 // console.log('b:'+b); 8 let arr1 = a.split('-'); 9 let arr2 = b.split('-'); 10 arr1.shift(); 11 arr2.shift(); 12 return sortBL(arr1,arr2); 13 } else { 14 // console.log(a); 15 // console.log(b); 16 // console.log('----------------------') 17 return a.charCodeAt(0) - b.charCodeAt(0); 18 } 19 } 20 function sortBL(arr1,arr2) { 21 if(arr1.length < 1 || arr2.length < 1 ) { 22 return arr1[0] - arr2[0]; 23 } 24 if(arr1[0] === arr2[0] && arr1[1] !== arr2[1]) { 25 // console.log('2222222') 26 return arr1[1] - arr2[1]; 27 } else { 28 // console.log('3333333') 29 arr1.shift(); 30 arr2.shift(); 31 return sortBL(arr1,arr2); 32 } 33 } 34 console.log(arr)
可能打印比较多 是为了看看 sort() 方法到底是如何执行的。结果与我想的不一样。
我以为比较时应该是 数组第一个值是a 第二个值是b . 但是打印出结果 是这样的
注意看下面的 后面的值是a :A-1-5-5 前面的值是b: A-1-10-2 这样就好理解了 比较的时候 是比较相邻的两个数。 但是,是从后往前推得 相邻的俩个数先比较 如果后面的数小 就往前推一位 (就是与前面的数互换位置) 然后一直往前比较 如果小就停在当前位置,大就再往前推一位。
我的理解是这样的 不知道对不对 希望有大神能指点指点。
原文链接:https://www.cnblogs.com/hilad/p/10284194.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- JavaScript函数表达式详解及实例 2020-03-25
- Js中如何使用sort() 2020-03-18
- 带你了解JavaScript中的函数 2020-03-08
- 详谈构造函数加括号与不加括号的区别 2020-01-17
- JavaScript匿名函数与委托使用示例 2020-01-07
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash