Jquery 对Array处理的两个函数 $.map() 和 $.each()

来源:互联网 发布:霍建华林心如 知乎扒皮 编辑:程序博客网 时间:2024/06/14 04:16

对于普通的数组如 var arr=[1,3,5]   就用$.each(arr,function(){alert(this)}) 输出的结果就是数组元素的值,这个this就是指当前处理这个元素(key)的值(value)
对于字典dictionary风格的Array 如 var arr={"tom":20,"jeek":25,"jos":26} 就用$.each(arr ,  function(key,value){key+"的年龄是"+value})

<html xmlns="http://www.w3.org/1999/xhtml"><head>    <title></title>    <script src="jquery-1.11.2.js"></script></head><body></body></html><script type="text/javascript">    //====================================$.map()==============================================    var myArr = new Array(); //创建一个数组    //$.map(arr,fn(){})*****对arr数组调用fn函数进行处理,fn函数将处理结果返回,得到一个新的array(数组)    //【注意:$.map()是有返还值的】$.map()不能处理字典风格的数组。    //将arr数组的每个元素乘以2后返回,得到到一个新array(数组),然后赋给arr2    var arr1 = [1, 2, 3];    var arr2 = $.map(arr1, function (i) { return i * 2 });    //i指的是当前遍历的数组的每一个元素    for (var j = 0; j < arr2.length; j++) {        alert(arr2[j]);    }    //如果不用for循环,就直接用alert(arr2)也是可以输出arr2里每个元素的值的    alert(arr2);  //输出 2,4,6,    var arr3 = [5, 4, 6, 3, 8, 9, 1];    var arr4 = $.map(arr3, function (value, key) { // 第一个参数是表示值 第二个参数表示索引 (如果只写一个参数,那么这个参数就是指值)        //alert(key);  //输出: 0, 1, 2, 3, 4, 5, 6        //alert(value);//输出:5, 4, 6, 3, 8, 9, 1        if (value > 4 && key < 5) {            return value;        }    })    alert(arr4); //输出:5,6,8    //====================================$.each()==============================================    //$.each(arr,fn(){}) 对数组arr的每个元素调用fn函数进行处理,没有返回值。    //【注意$.each(),只是处理,没有返回值】    var arr5 = { "凡斌": 25, "黄雪辉": 22 }    //以后处理Array推荐的用法,如果我想处理key,就取它的key就行了。如果想用value就取它的value就行了。很方便,也好记    $.each(arr5, function (key, value) { alert(key + "的年龄是" + value) }) //输出 凡斌的年龄是25;黄雪辉的年龄是22    var arr6 = [1, 2, 3];    //对arr4数组调用function函数进行处理,没有返回值。    $.each(arr6, function (key, value) { alert(key = value) })//输出的结果是1,2,3    $.each(arr6, function (key, value) { alert(key + "的值是" + value) })//输出的结果是:0的值是1;1的值是2;2的值是3    //--------------------------------------------关于处理函数function()的【参数个数】问题    //没有参数,没有参数就是输出的就是value,而不是key    $.each(arr6, function () { alert(this) }); //this就是当前处理这个元素的值。输出的结果是1,2,3    //带两个参数的,前面一个参数就是arr4的是key,后面一个是arr4对应key的value    $.each(arr6, function (itme, zhi) { alert(itme + "是" + zhi) }); //输出:0是1;0是2;2是3  这个itme其实就是arr4数组的key,这个zhi 就是数组的value    //带一个参数的,这个参数实际上能就是arr4元素的key,而不是值    $.each(arr6, function (i) { alert(i) }); //所以这里输出的结果是 0,1,2    //====================================$.inArray()============================================    //$.inArray()是获取查找到元素的下标 与indexOf差不多    var arr7 = [5, 2, 9, 4, 11, 57, 89, 1, 23, 8];    var arrInArray = $.inArray(9, arr7); //获取9这个元素再arr7中的索引下标 【即:key】    alert(arrInArray); //打印出:2  注:下标从0开始    //例子:如果b数组中的元素在a数组中不存在,就将它添加到a数组中。(其实就是合并两个素组,让后对元素去重)    var a = [1, 2, 3, 4, 6];    var b = [2, 4, 5, 7, 8];    $.each(b, function (key, val) {        if ($.inArray(val, a) == -1) { //$.inArray(val,a)的作用是查找val这个元素再a数组中的下标 如果存在,那么它的返回值就是val这个元素在a数组中的下标,如果不存在就返回-1            a.push(val);  //查看val这个元素是否在a数组中存在,如果不存在就将它添加到a数组中        }    })    a.sort(); //将a数组进行排序    alert(a); //打印出:1,2,3,4,5,6,7,8    //====================================$.merge()==============================================    //$.merge()合并两个数组    var c = [1, 2, 3, 4, 5, 6];    var d = [5, 6, 7, 8];    alert($.merge(c, d)); //打印出:1,2,3,4,5,6,5,6,7,8  (我们发现它仅仅是合并了两个数组而已) 其实它是将d这个数组并到了c数组里。所以这里打印出来的是c数组。</script>


0 0
原创粉丝点击