• jquery each map


    其中一个重要的区别是,each返回的是原来的数组,并不会新创建一个数组。而map方法会返回一个新的数组。如果在没有必要的情况下使用map,则有可能造成内存浪费。

    例如:

    var items = [1,2,3,4];
    $.each(items, function() {
    alert('this is ' + this);
    });
    var newItems = $.map(items, function(i) {
    return i + 1;
    });
    // newItems is [2,3,4,5]

    使用each时,改变的还是原来的items数组,而使用map时,不改变items,只是新建一个新的数组。

    例如:

    var items = [0,1,2,3,4,5,6,7,8,9];
    var itemsLessThanEqualFive = $.map(items, function(i) {
    // removes all items > 5
    if (i > 5)
    return null;
    return i;
    });
    // itemsLessThanEqualFive = [0,1,2,3,4,5]

    当需要对数组进行删除时也是如此,所以删除时错误使用each或map后果还是蛮严重的。

    each的js实现 

    function each(obj, fn) {
    if (!fn) {
    return;
    }
    if (obj instanceof Array) {//数组
    var i = 0, len = obj.length;
    for (; i < len; i++) {
    if (fn.call(obj[i],i)==false) {
    break;
    }
    }

    }
    else if (typeof obj === 'object') {//对象
    var j = null;
    for (j in obj) {
    if (fn.call(obj[j],j)==false) {
    break;
    }
    }

    }
    }

    //调用
    var arry = [1, 2, 3, 4, 5, 6, 7];
    var user = { name: '念在三角湖畔', site: 'http://www.111cn.net', addr: '湖北武汉', _salary: '1w', age: 22 };
    each(arry, function(index) {
    if (index>4) {
    return false;
    }
    console.log(index + '=>' + this);
    });
    each(user, function (key) {//输出公共属性/方法(约定"_"开头的属性或者方法为私有)
    if (!/^_/.test(key)) {
    if (typeof this==='function') {
    console.log(key + '=>function[Function]');
    } else {
    console.log(key + '=>' + this);
    }
    }
    });

    map的js实现

    function mymap(arr, fn) {

                      var arr1 = new Array();

                      for (var i = 0; i < arr.length; i++) {

                          arr1[i] = fn(arr[i]);

                      }

                      return arr1;

                  }

                  var t = [4, 5, 6];

                  var arr = mymap(t, function(n) { return n + 5; })

  • 相关阅读:
    美团数据治理参考
    Ignite(三): Ignite VS Spark
    Ignite(二): 架构及工具
    Sqlserver 计算两坐标距离函数
    Ignite(一): 概述
    IMDG
    锂电池不一致而产生危害
    平均数_中位数_众数在SqlServer实现
    怎样给孩子取一个好名字?搜狗“有名堂”大数据支招
    eclipse导入外部jar包
  • 原文地址:https://www.cnblogs.com/xjt360/p/4120551.html
Copyright © 2020-2023  润新知