jQuery 中对 each 及 sort 方法的详解

    本文先简单地介绍 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
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值