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
<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.
如果你有什么疑问可以留下评论,期待与你交流,互相学习。
- jQuery 中对 each 及 sort 方法的详解
- JQuery的each方法详解
- 详解jQuery each() 方法
- Jquery的foreach .each方法详解
- Jquery的foreach .each方法详解
- JQuery中$.each 和$(selector).each()的区别详解【转】
- JQuery中$.each 和$(selector).each()的区别详解
- JQuery中$.each 和$(selector).each()的区别详解
- jquery中 $.each()方法
- Jquery中each()方法
- jQuery中$.each的用法详解!
- jquery中.each的实现方法
- jquery中$each()方法的使用指南
- jquery中$each()方法的使用指南
- jquery中$each()方法的使用指南
- jquery的each方法
- Jquery的$.each()方法
- jquery的each方法
- Hibernate 一对多双向关联
- 日期加减
- 读书笔记2-《crazy java》
- 计算几何入门
- javascript数据结构与算法--队列
- jQuery 中对 each 及 sort 方法的详解
- removeEventListener('2016');
- UVA12100:Printer Queue(打印队列)
- 1025. 反转链表 (25)
- HDU-4553-约会安排(线段树维护最长连续区间)
- 文章标题 coderforces 148D : Bag of mice (概率DP)
- c++迭代器(iterator)详解
- Leetcode 368 - Largest Divisible Subset(dp)
- Spring源码如何导入到eclipse