jQuery 中对 each 及 sort 方法的详解

来源:互联网 发布:软件封装 可视化代码 编辑:程序博客网 时间:2024/05/16 07:08

    本文先简单地介绍 each() 方法,并对 sort() 方法进行详细的讲解。


    each() 和 sort() 在 jQuery 中都是循环函数,each 相当于 php 中的 foreach() 方法,也就是能遍历出数组的键和值,而 sort 是在遍历的基础上进一步对数组做了排序。下面就来依次介绍。

each :

    each 有两种用法

    ①    jQuery.each(array, function(i, n) { … });

    解析:

        array:要循环的对象

        i:当前遍历出来变量的 key

        n:当前遍历出来变量的值


    ②    $(selector).each(function(i, n) { … });

    解析:

        selector:CSS 的选择器,即遍历的对象,如 $("li") , $("button") 等

        i:选择器的 index 位置,即当前是第几个

        n:当前的元素,也可以使用 $(this) 选择器

    ▲注:当 function 只有一个参数时,该参数则表示索引值,可使用 $(this) 获取当前元素


sort :

    arrayobj.sort(function(a, b) { … });

    解析:

        arrayobj:要排序的数组对象

        a, b:数组中要比较大小的两个变量,按照从左往右的位置顺序比较,前2位到前 n 位从左至右作比较

注:其中 function(a, b){} 表示的就是 sortfunction


先来看几个例子:

Example1:

<script type="text/JavaScript">var arr = new Array(9,8,7,6);arr = arr.sort(function(a,b) {return a - b;});alert(arr);//输出 6,7,8,9</script>

如果把以上 “return a - b;” 换作 “return b - a;”,则输出 9,8,7,6 

Example2:

<script type="text/JavaScript">var arr = new Array(-1,-8,7,6);arr = arr.sort(function(a,b){if(a == b)  return 0;return (a < b) ? 1 : -1;//在这里, a < b 本身不会交换顺序,但返回1,则交换了位置/* 以上两句代码相当于:return b - a;*/});alert(arr);//输出 7,6,-1,-8</script>


处理过程是这样的:

        -1,-8,7,6 开始比较:

            a     b            排序结果

             -1    -8           -1,     -8,     7,        6

             -8     7            -1,     7, -8,       6

             -1     7            7,     -1,     -8,       6

             -8     6            7,     -1,      6,      -8

             -1     6            7,      6,     -1,      -8

              7     6             7,      6,     -1,      -8


从这里可以看出,sort() 方法相当于封装了冒泡排序的方法


根据上面例子可以总结出以下几点:

① 先排序前 2 位,再排序前3位,后排序前4位,依次类推;即排序规则为:右边位置的 b 如果比左边位置的 a 大,则把 b 向左移.

② 第一个参数如果大于第二个参数,就交换位置,如果小于不交换,相等则不改变,不交换与不改变同个道理.

③ 第一个参数 减 第二个参数 (a - b) 表示从小到大排序(升序);第二个参数 减 第一个参数 (b - a) 表示从大到小排序(降序),两个参数的位置顺序不限,可用任意变量表示,重点在于如何计算.

④ 如果没有参数,即没有 sortfunction ,  则会按照对象元素的 ASCII 字符顺序进行升序排序.  如:

<script type="text/JavaScript">var a = [5, 10, 1];a.sort();alert(a);//输出 [1, 10, 5]</script>

⑤ 如果为 sortfunction 该参数提供了一个函数,那么该函数必须返回正值、零或负值 ,一般是 1, 0, -1.


如果你有什么疑问可以留下评论,期待与你交流,互相学习。


0 0
原创粉丝点击