数组的高阶方法map filter reduce的使用
数组中常用的高阶方法:
foreach map filter reduce some every
在这些方法中都是对数组中每一个元素进行遍历操作,只有foreach是没有返回值的,reduce是的回调函数中,是有四个参数的,下面说一下他们的基本用法
arr.map(function(item,index,arr){
..............
})
//map方法内可以传入一个js自带的字段处理函数,需要注意的是传入的函数参数问题
let arr1 = [1,4,9]
let newArr1 = arr1.map(Math.sqrt) //Math.sqrt() 只接受一个参数,所以默认接受的是数组内每一个元素 传入对数组的每一个元素进行开放
console.log(newArr1); // [1,2,3]
let arr2 = [1,4,9]
let newArr2 = arr2.map(parseInt)
console.log(newArr2); // [1,NaN,NaN] 因为parseInt()可以接受两个参数,第一个参数是处理的数,第二个参数是转换的进制,在这里将数组中的下标当做了第二个参数,所以后两个元素是将4转为1进制,9转为2进制,都是NaN
//map可以对数组中的每个对象进行处理
let arr3 = [{a:1},{b:2},{c:3}]
// 对数组中的每个对象元素增加一个y属性,并且将每个新对象返回,组成一个新的数组
let newArr3 = arr3.map(item => {
item.y = 0
return item
})
console.log(newArr3); //[{a:1,y:0},{b:2,y:0},{c:3,y:0}]
//返回对象中指定的字段,组成新数组
let arr4 = [{a:1,x:2},{a:2,x:2},{a:3,x:2}]
let newArr4 = arr4.map(item => item.a)
console.log(newArr4); //[1, 2, 3]
filter:过滤(当返回值为ture时,才会返回当前处理的元素):
//过滤掉数组中不符合的元素
let arr = [1,2,3]
ler newArr = arr.map(item => return item > 1) // 过滤掉数组中空项,转为布尔为false的元素
let arr = [1,'',undefined,2,3]
let newArr = arr.filter(item => item) // 过滤掉数组内不符合条件的对象
let arr = [{a:1},{a:2},{a:3}]
let newArr = arr.filter(item => item.a > 1)
console.log(newArr); // [{a:2},{a:3}] //过滤掉指定的空项,将没有x属性的对象过滤掉
let arr = [{a:1,x:2},{b:1},{c:1,x:3}]
let newArr = arr.filter(item => item.x)
console.log(newArr); // 数组去重
var arr = [1,2,3,1,2,5,4,3,3,1]
var newArr = arr.filter((item,index,arr)=>{
return arr.indexOf(item) === index
})
console.log(newArr)
// 不传递初始值,直接以数组内的第一个元素为初始值。没传递初始值时,第一个参数就是上一次回调返回的值,这里的init依次是:1 3 6
let arr = [1,2,3,4]
let data = arr.reduce((init,now) => {
return init+now
})
// data 为10 // 传递一个Number初始值,
//init第一次是初始值10,之后每次都是上一次回调函数返回的值:
10 11 13 16
let arr = [1,2,3,4]
let data = arr.reduce((init,now) => {
return init+now
},10)
//data为20 //传递一个Object初始值. 使对象里的属性和某数组内的元素累加
let arr = [1,2,3,4]
let data = arr.reduce((init,now) => {
init.sum = init.sum + now
return init
},{sum:2})
console.log(data); // {sum:12} //对象内的某个属性进行累加
let arr = [
{a:1,name:'a'},
{a:2,name:'b'},
{a:3,name:'c'},
]
let data = arr.reduce((init,now) => {
return init + now.a
},0)
console.log(data); // 6 // 查看某字符串,每个字符出现的次数
var str = 'abccacbbaacaa'
var obj = str.split('').reduce((init,now) => {
init[now] ? ++init[now] : init[now] = 1
return init
},{})
console.log(obj); //{a: 6, b: 3, c: 4}
.tb_button { padding: 1px; cursor: pointer; border-right: 1px solid rgba(139, 139, 139, 1); border-left: 1px solid rgba(255, 255, 255, 1); border-bottom: 1px solid rgba(255, 255, 255, 1) }
.tb_button.hover { borer: 2px outset #def; background-color: rgba(248, 248, 248, 1) !important }
.ws_toolbar { z-index: 100000 }
.ws_toolbar .ws_tb_btn { cursor: pointer; border: 1px solid rgba(85, 85, 85, 1); padding: 3px }
.tb_highlight { background-color: rgba(255, 255, 0, 1) }
.tb_hide { visibility: hidden }
.ws_toolbar img { padding: 2px; margin: 0 }
数组的高阶方法map filter reduce的使用的更多相关文章
- 高阶函数-map/filter/reduce
什么样的函数叫高阶函数: 条件:1.函数接受函数作为参数 2.函数的返回值中包含函数 高阶函数之----map函数 map(func, *iterables) --> map objectnum ...
- 高阶函数map(),filter(),reduce()
接受函数作为参数,或者把函数作为结果返回的函数是高阶函数,官方叫做 Higher-order functions. map()和filter()是内置函数.在python3中,reduce()已不再是 ...
- 高阶函数map,filter,reduce的用法
1.filter filter函数的主要用途是对数组元素进行过滤,并返回一个符合条件的元素的数组 let nums = [10,20,30,111,222,333] 选出nums中小于100的数: l ...
- Python高阶函数map、reduce、filter、sorted的应用
#-*- coding:utf-8 -*- from selenium import webdriver from selenium.webdriver.support.wait import Web ...
- JS高阶函数--------map、reduce、filter
一.filter filter用于对数组进行过滤.它创建一个新数组,新数组中的元素是通过检查指定数组中符合条件的所有元素. 注意: filter() 不会对空数组进行检测. 注意: filter() ...
- python的高阶函数(map,filter,sorted,reduce)
高阶函数 关注公众号"轻松学编程"了解更多. 1.MapReduce MapReduce主要应用于分布式中. 大数据实际上是在15年下半年开始火起来的. 分布式思想:将一个连续的字 ...
- js高阶函数map和reduce
map 举例说明,比如我们有一个函数f(x)=x2,要把这个函数作用在一个数组[1, 2, 3, 4, 5, 6, 7, 8, 9]上,就可以用map实现如下: 由于map()方法定义在JavaScr ...
- python学习笔记1 -- 函数式编程之高阶函数 map 和reduce
我用我自己,就是高阶函数,直接表现就是函数可以作为另一个函数的参数,也可以作为返回值 首先一个知识点是 函数的表现形式,印象中的是def fw(参数)这种方式定义一个函数 python有很多的内置函 ...
- python之高阶函数--map()和reduce()
以下为学习笔记:来自廖雪峰的官方网站 1.高阶函数:简单来说是一个函数里面嵌入另一个函数 2.python内建的了map()和reduce()函数 map()函数接收两参数,一个是函数,一个是Iter ...
随机推荐
- 0x04
二分: while(l<r) { int mid=(l+r)/2; if(符合条件) r=mid; else l=mid+1; } 固定下二分的写法: 终止条件:l==r: 取mid=(l+r) ...
- hdu 1028 Ignatius and the Princess III(母函数)
题意: N=a[1]+a[2]+a[3]+...+a[m]; a[i]>0,1<=m<=N; 例如: 4 = 4; 4 = 3 + 1; 4 = 2 + 2; 4 = 2 + ...
- JVM-内存区域与OOM
本篇博客内容主要参考<深入理解Java虚拟机> 内存区域与内存溢出异常 运行时数据区 Java虚拟机运行时数据区: 程序计数器(Program Counter Register)是一块较小 ...
- Java学习笔记:GUI基础
一:我们使用到的java GUI的API可以分为3种类: 组件类(component class) 容器类(container class) 辅助类(helper class) 1:组件类:组件类是用 ...
- pip 常用命令小结
pip 常用命令小结 pip这个工具我们经常会用到,毕竟python 是一门以第三方库庞大而著名的编程语言,所以我们总会用pip 安装一些依赖库,当然这只是pip 最常用的一个命令,下面就来介绍一下 ...
- nose在python2与python3中的包的自动发现用例的区别
最近在使用python3,同样装了nose,发现自动发现用例总是有问题,如下面的代码结婚 testcase |------ __init__.py |------ test_bb.py test_bb ...
- No versions available for io.grpc:grpc-core:jar:[1.13.1] within specified range
No versions available for i{0}:[1.13.1] within specified range maven打包的时候报错是由于同一个jar包有多个版本导致的版本冲突 解决 ...
- super和this
super注意点: 1.super调用父类的构造方法,必须在构造方法的第一个 2.super必须只能出现在子类的方法或者构造方法中 3.super和this不能同时调用构造方法 this: 代表的对象 ...
- Bean_sprout的第一次编程作业
第一次编程作业 一.PSP表格 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 60 120 · Estim ...
- SpringBoot项目配置文件中密码的加密
作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/15565862.html 版权声明:本文为博主原创文章,转载请附上博文链接! 公众号:追梦1819 ...