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

对于普通的数组如 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>

 

数组中some方法是用来遍历数组的 

some和each的区别是,在数组some方法中如果return true就会立即终止这个数组的后续循环

<script>
    var list = new Array(1, 2, 3, 4, 5, 6); //创建一个数组并给它分配了6个元素
    list.some((item, index) => {
         
        if (item == 2) {
            list.splice(index, 1);//删除list中2的项
            return true; //在数组some方法中,如果return true就会立即终止这个数组的后续循环
        }        
    })
    alert(list); //打印出1,3,4,5,6
</script>

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值