前言
尽管是这两个方法是封装起来的,但是其思想尤为重要,将面向步骤过程操作,变成一个函数式的操作函数式编程是一个流水线生产模式!现在听着可能有点蒙蔽,那就和小编一起来搞定它吧!
1、map方法
$.map() 函数用于使用指定函数处理数组中的每个元素(或对象的每个属性),并将处理结果封装为 新的数组返回。
语法
$.map( object, callback )前边的object是对象或者数组,后边的callback是一个我们自己定义的函数!用来对我们的对象或者数组进行操作!
callback的写法一般为function(v,i)为函数传入两个参数:v是当前迭代的元素或属性值,i是当前迭代项的数组索引或对象属性名。 (元素对应的是索引)(属性值对应的是对象属性名)接下来分别举一个遍历数组的例子和一个对象的例子!
var arr1 = [12, 3, 4, 0 - 9];
var new_arr = $.map(arr1, function (v, i) {
return v * 2;
});
alert(new_arr);
//返回的是[24,6,80,-18]
var o = { name: "李光", age: 19, sex: "男" };
$.map(o, function (k, v) {
alert(k + "-----" + v);
});
// 返回结果:李光-----name
19-----age
男-----sex
2、each方法
each() 方法为每个匹配元素规定要运行的函数。
提示:返回 false 可用于及早停止循环。
语法
$.each(object,function(index,element)) 这个同上,不做解释,下边的是一个例子!
var o = { name: "李光", age: 19, sex: "男" };
$.each(o, function (k, v) {
alert(k + "-----" + v);
});
// 返回结果:name-----李光
age-----19
sex-----男
综上所述,二者可以实现相同的功能,那么二者到底有什么区别呢,接下来用三句话总结一下!
map()方法主要用来遍历操作数组和对象,each()主要用于遍历jquery对象。
each()返回的是原来的数组,并不会新创建一个数组。
map()方法会返回一个新的数组。如果在没有必要的情况下使用map,则有可能造成内存浪费。