前端XX媛

此博客做为收集、整理、总结文献用

js中的排序小案例

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>



阅读更多
上一篇npm 如何设置镜像站
下一篇table-layout:fixed 应用
想对作者说点什么? 我来说一句

50个js经典案例

2015年12月19日 5.7MB 下载

没有更多推荐了,返回首页

关闭
关闭