解析jQuery下的$.grep()方法和$.map()方法

来源:互联网 发布:编程一小时官网 编辑:程序博客网 时间:2024/06/05 04:19

        今日在用jQueryUi做邮箱自动补全项目的代码中,用到了$.grep()方法和$.map()方法

      (1)  首先讲$.grep()方法

                    $.grep()方法用于数组元素过滤筛选

  
                    grep(array,callback,invert)
               
                    array:待过滤数组;
 
                    callback:处理数组中的每个元素,并过滤元素,该函数中包含两个参数,第一个是当前数组元素的值,一个是当前数组元素的下标,即元素索引值。此函数应返回一个布尔值。

                另外,此函数可设置为一个字符串,当设置为字符串时,将视为“lambda-form”(缩写形式?),其中a 代表数组元素,i 代表元素索引值。如“a > 0”代表“function(a){ return a >

0;}”

invert:布尔型可选项,默认值false,值为true或false, 如果 “invert” 为 false或为设置,则函数返回数组中由过滤函数返回 true 的元素,当”invert” 为 true,则返回过滤函数中返

回 false的元素集。

var arr=$.grep([0,1,2,3,4,5,6],function(n,i){

return n>2

});

上面的例子返回[3,4,5,6],但是我们给invert的值为true,例如

var arr=$.grep([0,1,2,3,4,5,6],function(n,i){

return n>2

},ture);
所以现在返回的是[0,1,2],也就是被callback函数过滤掉的元素。
    (2)$.map()方法
       jQuery.map(array,callback)
      将一个数组中的元素转换到另一个数组中。
    作为参数的转换函数会为每个数组元素调用,而且会给这个转换函数传递一个表示被转换的元素作为参数。转换函数可以返回转换后的值、null(删除数组中的项目)或一     个包含值的数组,并扩展至原始数组中。
   

参数
array (Array) : 待转换数组。

callback (Function) : 为每个数组元素调用,而且会给这个转换函数传递一个表示被转换的元素作为参数。函数可返回任何值。另外,此函数可设置为一个字符串,当设置为字符串时,将视为“lambda-form”(缩写形式?),其中 a 代表数组元素。如“a * a”代表“function(a){ return a * a; }”。

示例
将原数组中每个元素加 4 转换为一个新数组。

jQuery 代码:

$.map( [0,1,2], function(n){
return n + 4;
});
结果:

[4, 5, 6]




原数组中大于 0 的元素加 1 ,否则删除。

jQuery 代码:

$.map( [0,1,2], function(n){
return n > 0 ? n + 1 : null;
});
结果:

[2, 3]



0 0
原创粉丝点击