关闭

js中的排序小案例

452人阅读 评论(0) 收藏 举报

js中排序用到了sort函数。


下面代码实现字母、数字的混合排序:

<script>
var d = [1,2,3,'a','k','b','d',10,20,'c']
d.sort(function(a,b){
  var c = isFinite(a), // 如果 number 是有限数字(或可转换为有限数字),那么返回 true。否则,如果 number 是 NaN(非数字),或者是正、负无穷大的数,则返回 false。
      d = isFinite(b);

  return (c != d && d - c) || a > b;
})
console.log(d)
</script>

代码解析:

isFinite() 判断a、b是否是数字。

return 后面的语句:

   c != d && c - d  如果c和d不相等 ,也就是说比较的值不是同一类型。那就比较 c-d的值是1还是-1(中间进行了隐式类型转换)

   如果c == d 也就是说c、d是同一类型的值,c、d可能都是字母,也可能都是数字。这里就可以直接比较大小了(都是字母的话不能直接做减法)。

isFinite() 函数用于检查其参数是否是无穷大。如果 number 是有限数字(或可转换为有限数字),那么返回 true。否则,如果 number 是 NaN(非数字),或者是正、负无穷大的数,则返回 false。


实现汉字的排序:

用到了localCompare

<script>
var d = ["你好","英语","呵呵","三个臭皮匠"]
d.sort(function(a,b){
  return a.localeCompare(b)
})
console.log(d)
</script>



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:404590次
    • 积分:3921
    • 等级:
    • 排名:第8355名
    • 原创:63篇
    • 转载:74篇
    • 译文:0篇
    • 评论:38条
    文章分类
    最新评论