zoukankan      html  css  js  c++  java
  • 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; })

  • 相关阅读:
    javaSE基础知识
    oracle错误分析:ora-04063:view view_test has errors
    爬虫—01-爬虫原理与数据抓取
    Web—13-判断网站请求来自手机还是pc浏览器
    Web—12-详解CSS的相对定位和绝对定位
    Web—11-手机端页面适配
    Web—10-前端性能优化
    Web—09-正则表达式
    知识储备—01-进程,线程,多线程相关总结
    Web—08-移动端库和框架
  • 原文地址:https://www.cnblogs.com/xjt360/p/4120551.html
Copyright © 2011-2022 走看看