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

  • 相关阅读:
    2018
    线程的五大状态
    SQL 列转行与行转列
    python中元组(tuple)的拆包unkacping
    python字典的相关操作总结
    C语言使用typedef进行类型重定义
    C++中namespace的用法理解
    ping: unknown host 解决办法
    go环境变量配置liteide配置
    svn出现Authorization failed
  • 原文地址:https://www.cnblogs.com/xjt360/p/4120551.html
Copyright © 2011-2022 走看看