首页 > js数组排序问题

js数组排序问题

<script type="text/javascript"> 
var arr = new Array(1,3,9,5,2,10,15);
var res = arr.sort(function(a,b){      //为什么定义这个函数 a,b分别指什么

    if(a>b){                           //这个if语句也不明白 
        return 1;
    }else {
        return -1;
    }

});
console.log(res);

</script>

以前写的博文 可以参考下 http://www.cnblogs.com/zichi/p/5180489.html


看这里https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/sort


你现在要要做的是给数组排序,sort是数组排序的一个方法,他的语法是数组.sort(function(){//排序的方法}),这个函数是可选的,如果没有就按照Unicode码给他们排序,但是不一定的到你想要的顺序,比如你不写默认的排序是(1,10,15,2,3,5,9)他们会先转成字符串,比较第一位,再比较接下来的。所有这个时候给个参数a、b是为了让他们按照你需要的顺序来排。if判断语句的意思是,a,b是数组里面的数据,相互比较,如果大的放后面,小的放前面。上面的链接说的比较仔细,你可以具体研究下。


arr.sort(func) 调用了Array对象的内置方法sort来做排序,下面是一个类似的实现,传入一个方法来使用冒泡排序算法来排序数组。

function bubble_sort(arr, func) {
  do {
    var swapped = false;
    for (var i = 1, len = arr.length; i < len; i++) {
      // 调用自定义函数作比较
      if (func.call(null, arr[i - 1], arr[i]) > 0) {
        var temp = arr[i - 1];
        arr[i - 1] = arr[i];
        arr[i] = temp;
        swapped = true;
      }
    }
  } while (swapped);
  return arr;
}
var sortarr = bubble_sort(arr, sort);
【热门文章】
【热门文章】