zoukankan      html  css  js  c++  java
  • 数组map方法与如何使用ES5实现

    数组map方法与如何使用ES5实现

    JavaScript Array map() 方法

    定义

    map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值

    map() 方法按照原始数组元素顺序依次处理元素。

    注意:

    • map() 不会检测数组是否为空。
    • map() 不会改变原始数组,而是返回一个新数组。

    语法

    arr.map(function(curVal,idx,arr), thisVal)

    参数 描述
    curVal 必须,当前元素的值。
    Idx 可选,当前元素的索引值。
    arr 可选,当前元素属于的数组对象。
    thisVal 可选,传递给函数,用作this的值。

    例子

    let arr = [1,2,3,4,5];
    arr.map(val => val+1); // [2,3,4,5,6]
    

    使用ES5实现map()函数

    Array.prototype.myMap = function(fn, ctx) {
    	let oriArr = Array.prototype.slice.call(this);
    	let mappedArr = [];
        for (let i = 0; i < oriArr.length; i++) {
            if (!oriArr.hasOwnProperty(i)) {
                // 若原数组为稀疏数组,不含索引为i的元素时,mappedArr直接增加length,来达到同样的稀疏效果
                mappedArr.length++;
            } else {
                mappedArr.push(fn.call(ctx, oriArr[i], i, this));
            }
        }
        return mappedArr;
    };
    

    检测

    let a = [1,2,3,,,,4,];
    a.map(val => val+1); // (8) [2, 3, 4, empty × 3, 5, empty]
    a.myMap(val => val+1); // (8) [2, 3, 4, empty × 3, 5, empty]
    
  • 相关阅读:
    表单小知识
    HTML列表,表格与媒体元素
    P1008 三连击
    打鱼晒网问题
    最小编辑距离算法
    算法设计与分析--01背包问题(动态规划法解决)
    文件读写函数
    C语言中数据输入输出到文件操作freopen()函数(1)
    输入输出框架(未完待续)
    阶乘1到阶乘n的和
  • 原文地址:https://www.cnblogs.com/zmj97/p/10966552.html
Copyright © 2011-2022 走看看