zoukankan      html  css  js  c++  java
  • jquery 中Map、each的应用

    jQuery.map( array, callback(elementOfArray, indexInArray) )

    The function can return:

    • the translated value, which will be mapped to the resulting array
    • null or undefined, to remove the item
    • an array of values, which will be flattened into the full array

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

    [4, 5, 6]

    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; });

    /function(item)当中的参数item为当前数组的每一个元素。

    创建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

    json对象

    var jsonData = {"tom": 20, "jerry": 21 };

    $.each(jsonData,function (key, value) {

         alert(key + "_" + value);
    });

    结果:tom_20, jerry_21

     

    $.each(jsonData,function (i) {

         alert(jsonData[i]);

    });

    结果:20,21

     jquery对象的map方法

    map() 把每个元素通过函数传递到当前匹配集合中,生成包含返回值的新的 jQuery 对象。

    .map(callback(index,domElement)) 

    由于返回值是 jQuery 封装的数组,使用 get() 来处理返回的对象以得到基础的数组。

    .map() 方法对于获得或设置元素集的值特别有用。请思考下面这个带有一系列复选框的表单:

    <form method="post" action="">
      <fieldset>
        <div>
          <label for="two">2</label>
          <input type="checkbox" value="2" id="two" name="number[]">
        </div>
        <div>
          <label for="four">4</label>
          <input type="checkbox" value="4" id="four" name="number[]">
        </div>
        <div>
          <label for="six">6</label>
          <input type="checkbox" value="6" id="six" name="number[]">
        </div>
        <div>
          <label for="eight">8</label>
          <input type="checkbox" value="8" id="eight" name="number[]">
        </div>
      </fieldset>
    </form>
    我们能够获得复选框 ID 组成的逗号分隔的列表:
    $(':checkbox').map(function() {
      return this.id;
    }).get().join(',');

    亲自试一试

    本次调用的结果是字符串:"two,four,six,eight"。

    在 callback 函数内部,this 引用每次迭代的当前 DOM 元素。该函数可返回单独的数据项,或者是要被插入结果集中的数据项的数组。如果返回的是数组,数组内的元素会被插入集合中。如果函数返回 null 或 undefined,则不会插入任何元素。

    参考:http://www.w3school.com.cn/jquery/traversing_map.asp

     
  • 相关阅读:
    雪花算法 适用于ID 自增
    SB ,mybatis generator 插件 实现 更新操作
    spark优化
    Hive的导入导出方式汇总
    推荐系统架构图
    DBScan算法
    机器学习-逻辑回归算法
    机器学习-微博精准营销
    机器学习-TF-IDF算法
    机器学习-KNN识别手写数字
  • 原文地址:https://www.cnblogs.com/youxin/p/2937543.html
Copyright © 2011-2022 走看看