数组map方法与如何使用ES5实现
Posted zmj97
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组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]
以上是关于数组map方法与如何使用ES5实现的主要内容,如果未能解决你的问题,请参考以下文章
ES5新增的常用数组方法(forEach,map,filter,every,some)
ES5新增 数组操作forEach()map()filter()some()every()