map、filter、forEach、reduce数组方法的封装
1、map方法的封装
Array.prototype.mapAlley = function(callback){
//获取调用mapAlley这个方法的数组
let arr = this;
//获取this的指向,如果传递了就获取arguments中的第一个值 没有不存在则this仍然指向window
let _this = arguments[1] || window;
//因为mapAlley是不会操作原数组因此需要返回一个新的数组
var newArr = []
//遍历数据
for(var i=0;i<arr.length;i++){
//将callback的返回值添加到数组中去
newArr.push(callback.call(_this,arr[i],i,arr))
}
return newArr;
}
2、filter方法的封装
Array.prototype.filterAlley = function(callback){
//获取调用filter的数组
let arr = this;
//判断是否传递了第二个参数
let _this = arguments[1] || window;
//因为不会操作原数组因此需要返回一个新的数组
let newArr = [];
for(var i=0;i<arr.length;i++){
//根据callback的返回值(true)来判断当前数据是否使用
if(callback.call(_this,arr[i],i,arr)){
newArr.push(arr[i])
}
}
return newArr;
}
3、forEach方法的封装
Array.prototype.forEachAlley = function(callback){
let arr = this;
let _this = arguments[1] ||window;
for(var i=0;i<arr.length;i++){
callback.call(_this,arr[i],i,arr)
}
}
4、reduce方法的封装及使用
Array.prototype.reduceAlley = function(callback,initVal){
//获取数组
var arr = this;
//判断用户是否传递了初始值
var isInitValFlag = false;
//最终要返回的数据
var prev;
//如果用户传递了初始值
if(initVal){
//则将初始值赋值给prev,并且将isInitValFlag更改为true
prev = initVal;
isInitValFlag = true;
}
for(var i=0;i<arr.length;i++){
//判断初始值是否传递了 如果没有传值则将数组的第一个值定义为初始值
if(isInitValFlag){
prev = callback(prev,arr[i],i,arr);
}else{
prev = arr[i];
isInitValFlag = true;
}
}
return prev;
}
判断数组中的最大值
var arr = [1,2,3,4,5];
arr.reduce((prev,curr)=>{
return Math.max(prev,curr)
})
实现扁平化数组
var arr = [[1,2],[3,4],[5,6,[7,8]]]
function mapArr(arr){
return arr.reduce((prev,curr)=>{
return prev.concat(Array.isArray(curr)?mapArr(curr):curr)
},[])
}
如何获取url地址中的参数
var url = "http://www.baidu.com?name=alley&age=19";
var str = url.slice(url.indexOf("?")+1);
str.split("&").reduce(function(prev,curr){
var key = curr.split("=")[0];
var val = curr.split("=")[1];
prev[key] = val;
return prev
},{})
map、filter、forEach、reduce数组方法的封装的更多相关文章
- Map,Filter和Reduce
转自:https://www.aliyun.com/jiaocheng/444967.html?spm=5176.100033.1.13.xms8KG 摘要:Map,Filter和Reduce三个函数 ...
- Python Map, Filter and Reduce
所属网站分类: python基础 > 函数 作者:慧雅 原文链接: http://www.pythonheidong.com/blog/article/21/ 来源:python黑洞网 www. ...
- [译]PYTHON FUNCTIONS - MAP, FILTER, AND REDUCE
map, filter, and reduce Python提供了几个函数,使得能够进行函数式编程.这些函数都拥有方便的特性,他们可以能够很方便的用python编写. 函数式编程都是关于表达式的.我们 ...
- Map, filter and reduce
To add up all the numbers in a list, you can use a loop like this: Total is initialized to 0. Each t ...
- js Array 中的 map, filter 和 reduce
原文中部分源码来源于:JS Array.reduce 实现 Array.map 和 Array.filter Array 中的高阶函数 ---- map, filter, reduce map() - ...
- Python之内建函数Map,Filter和Reduce
Python进阶 map,filter, reduce是python常用的built-in function. 且常与lambda表达式一起用. 其中: map 形式:map(function_to_ ...
- Go 通过 Map/Filter/ForEach 等流式 API 高效处理数据
什么是流处理 如果有 java 使用经验的同学一定会对 java8 的 Stream 赞不绝口,极大的提高了们对于集合类型数据的处理能力. int sum = widgets.stream() .fi ...
- python库函数Map, Filter and Reduce的用法
python中有三个函数式编程极大的简化了程序的复杂性,这里就做一下讨论和记录. 一 Map:应用在链表输入所有元素的函数,它的格式如下所示: map(function_to_apply, list_ ...
- [Python学习笔记-002] lambda, map, filter and reduce
1. lambda lambda, 即匿名函数,可以理解为跟C语言的宏类似.例如: >>> max = lambda x, y: x if x > y else y >& ...
随机推荐
- 设置select下拉框高度的一种方法
这种方法可以设置下拉框最多显示几条栏目,多余的栏目用显示滚动条展示: <select style="position: absolute;z-index: 1;" onmou ...
- 网页压缩--gzip和deflate的区别
我们在配置网站GZip压缩的时候,会发现有两个模块可以设置的,一个是GZip模块的参数配置,另一个是Deflate模块的参数配置,他们的设置方法是一样的.刚开始时我不太明白,这两地方有什么不同?网站开 ...
- 1、获取APP 冷/热启动时间
最近在研究Android APP性能测试.所以发现一些有趣的东西,在这里进行分享.我们先讲第一个内容,如何获取APP冷/热启动时间?为什么要做这个测试,道理其实很简单,如果启动APP特别耗时的话,用户 ...
- Cuckoo架构
cuckoo在部署阶段,只在Guest系统里塞了一个agent,这个agent在运行阶段负责与Host端程序进行通信,从Host端接收sample, 整个客户端程序,以及配置文件. 在Host端主要的 ...
- 洛谷 P2756 飞行员配对方案问题 (二分图匹配)
题目链接:P2756 飞行员配对方案问题 题意 给定 \(m\) 个外籍飞行员和 \(n - m\) 个英国飞行员,每一架飞机需要一名英国飞行员和一名外籍飞行员,求最多能派出几架飞机. 思路 最大流 ...
- PAT_A1139#First Contact
Source: PAT A1139 First Contact (30 分) Description: Unlike in nowadays, the way that boys and girls ...
- Chrome调试小技巧
前言: 除了我们日常使用的调试方法,在Chrome中,其含有一些有意思的方法,有助于提高我们的开发调试效率. Sources页 command + p 文件跳转 使用Sublime的人或习惯用comm ...
- nginx新增简单下载站点
配置nginx server { autoindex on;# 显示目录 autoindex_exact_size on;# 显示文件大小 autoindex_localtime on;# 显示文件时 ...
- Unity3D中画拉选框(绘制多选框)
问题分析: 需要根据鼠标事件,摁下鼠标开始绘制选择框,抬起鼠标结束绘制. 实现思路: 该需求是屏幕画线,Unity内置了GL类 封装了OpenGL,可以通过GL类来实现一些简单的画图操作,这里也是使 ...
- sql ibatis
<!-- 写入单位下当前参保人员 --> <insert id="insertTempCaz043" parameterClass="map" ...