当前位置:首页 >> JavaScript>>正文

关于javascript中的sort()方法理解

栏目:JavaScript时间:2017-03-29热度:
本文标签: JavaScript sort() 内置对象

  在学习JavaScript的内置对象sort()时,我发现sort()是个比较难以理解的东西。(可能是本人的水平还不太够...),先写一篇文章记录一下吧。

  sort()方法的参数必须是函数,如果留空的话,则按unicode码顺序排列。

  例如:

<script type="text/javascript">
  var arr = new Array(6)
  arr[0] = "George"
  arr[1] = "John"
  arr[2] = "Thomas"
  arr[3] = "James"
  arr[4] = "Adrew"
  arr[5] = "Martin"
  document.write(arr + "<br />")
  document.write(arr.sort())
</script>

  输出:

George,John,Thomas,James,Adrew,Martin
Adrew,George,James,John,Martin,Thomas

  换个全部为数字的例子:

<script type="text/javascript">
  var arr = new Array(6)
  arr[0] = "10"
  arr[1] = "5"
  arr[2] = "40"
  arr[3] = "25"
  arr[4] = "1000"
  arr[5] = "1"
  document.write(arr + "<br />")
  document.write(arr.sort())
</script>

  输出:

10,5,40,25,1000,1
1,10,1000,25,40,5

  这时候我们会,上面的代码没有按照数值的大小对数字进行排序,要实现这一点,就必须使用一个排序函数:

<script type="text/javascript">
  function sortNumber(a,b)
  {
  return a - b
  }
  var arr = new Array(6)
  arr[0] = "10"
  arr[1] = "5"
  arr[2] = "40"
  arr[3] = "25"
  arr[4] = "1000"
  arr[5] = "1"
  document.write(arr + "<br />")
  document.write(arr.sort(sortNumber))
</script>

  输出: 

10,5,40,25,1000,1
1,5,10,25,40,1000

  难以理解的地方就出现在这里,明明sortNumber应该是有两个参数,但是我们在调用时却一个参数都没有,那是怎么进行比较的呢?

  我的理解是这样的,当arr从第一个数开始调用sort时,10前面是没有数与它比较的,所以就到第二个,就是5,这时10就会与5比较,于是就会调用sortNumber并将10和5传进去。

  那就先这么理解吧...


热门标签