数组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实现的更多相关文章
- JavaScript中数组map()方法
JavaScript 数组map()方法创建一个新的数组使用调用此数组中的每个元素上所提供的函数的结果.语法 ? 1 array.map(callback[, thisObject]); 下面是参数的 ...
- 使用 reduce 实现数组 map 方法
//使用 reduce 实现数组 map 方法 const selfMap2 = function (fn, context){ let arr = Array.prototype.slice.cal ...
- 循环实现数组 map 方法
//循环实现数组 map 方法 const selfMap = function (fn, context) { let arr = Array.prototype.slice.call(this) ...
- 我能考虑到的数组(老)方法就这些了(es5)
代码注释都写的很清楚了 关键字:斐波那契数组.二维数组.多维数组(矩阵)... <!DOCTYPE html> <html lang="en"> <h ...
- Array(数组)--map方法
关于Array.prototype.map() MDN 给的定义是: 在作用数组元素的每一项上调用一个方法(callback),返回一个新数组: 使用格式:arr.map(callback[,this ...
- js 数组 map方法
https://www.cnblogs.com/xuan52rock/p/4460949.html https://jingyan.baidu.com/article/91f5db1b7453471c ...
- 关于ES3、ES5、ES6以及ES7所有数组的方法(api)的总结
起因:工作用经常用到操作数组的方法,这里进行一下总结,我尽量以简洁的语言概括每个方法(api)的作用.如果您想快速定位,可以Control+F 然后搜相应的方法即可定位 :) ES3的数组方法 joi ...
- ES6 数组遍历方法的实战用法总结(forEach,every,some,map,filter,reduce,reduceRight,indexOf,lastIndexOf)
目录 forEach every some map filter reduce && reduceRight indexOf lastIndexOf 前言 ES6原生语法中提供了非常多 ...
- ES5新增数组的方法
ES5新增数组的方法 ES5新增数组常见方法(indexOf/forEach/map/filter/some/every) .indexOf( data , start) 检测数组中是否存在指定数据 ...
随机推荐
- JavaScript+CSS交互
当鼠标移动到小图片上时,小图片显示红色边框并在上面大图片显示相应大图片,效果如图: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Trans ...
- HDU_1398_母函数
Square Coins Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tota ...
- 关于layui 下拉框 bug
@for (; i < ; i++) { <option value=</option> } 当value=""时候 自动添加选中样式
- golang入门-defer
package main import "fmt" func main() { i := 5 tmap := make(map[string]int, 5) tmap[" ...
- [kernel]----理解kswapd的低水位min_free_kbytes
1. min_free_kbytes 先看官方解释: This is used to force the Linux VM to keep a minimum number of kilobytes ...
- (13)处理静态资源(默认资源映射)【从零开始学Spring Boot】
Spring Boot 默认为我们提供了静态资源处理,使用 WebMvcAutoConfiguration 中的配置各种属性. 建议大家使用Spring Boot的默认配置方式,如果需要特殊处理的再通 ...
- 用DIME格式来组织自定义格式
直接网际消息封装(Direct Internet Message Encapsulation,即DIME)格式提供了一种简单而又标准的机制,这个机制可以把多文本(multiple text)和二进制数 ...
- mybatis使用-高级用法(二)
新建学生表和学生证表 --学生表 CREATE TABLE student( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT 'id', `nam ...
- n!最末尾非0数
最小周期串:如果s是ss的周期串,那么ss就可以表示成几个周期的s,如果s是ss的最小周期串,那么s就是ss的周期串中最小的一个.例,ZgxZgxZgxZgx的最小周期串是Zgx.{很好理解} 给你一 ...
- [jQuery]jQuery获取URL参数
// jQuery url get parameters function [获取URL的GET参数值]// <code>// var GET = $.urlGet(); //获取URL的 ...