jquery 中Map、each的应用
Map官方定义:将一组数组转换为其他数组。
通俗一点说:也就是根据当前数组创建一个新的数组,怎么创建由自己来定义
Map的语法: $.map(arr,callback);
arr为当前数组,callback为要执行的方法也就是如何改变这个数组
下面我们做一个例子来实验一下:
首先我们要声明一个数组,其中包括1,2,3,4,5,然后通过Map函数转换为2,4,6,8,10,的数组下面是相关代码:
//声明一个数组 var arr = [1, 2, 3]; //将数组转换成另一个数组,第一个参数为要转换的数组,第二个参数为执行的方法 var arr2 = $.map(arr, function (item) { return item * 2; });
创建arr2的数组,然后我们需要循环遍历输出此数组:
在jquery中没有foreach,那么我们需要用另一个函数来代替C#中的foreach,即each
each的语法: $.each(arr,function(){});
第一个参数为要循环的对象,第二个参数为执行的方法
也可以这么写:$("div").each(function(){});
这句代码的意思为:在所有div标签的元素当中执行后面的方法.
大致原理为:从第一个元素开始循环,循环完此元素,则开始找下一个元素,如果找到则返回true继续执行,相当于c#中的continue
如果没有找到则返回false,结束执行相当于C#中的break
方法中不传入参数则this就是当前的循环的中的元素
现在我们试着循环此数组:
//遍历输出数组,each相当于foreach 第一个参数为要输出的数组,第二个参数为怎么输出,不传参则用this代替数组中的元素 $.each(arr2, function () { alert(this); }); //键值对的数组,键值对的数组用大括号 var jian = { "myname": "王五", "age": 12 }; $.each(jian, function (k, v) { alert(k + "为:" + v) }); //如果只是普通的遍历用不带参数的方法,如果是键值对则用带参的.
each数组还可以用于键值对数组的输出
$.each(jian, function (k, v){ alert(k + "为:" + v) });
k表示键 V 表示值
这大概相当于C#中的dictionary。