数组中常用的高阶方法:

  foreach    map    filter    reduce    some    every

在这些方法中都是对数组中每一个元素进行遍历操作,只有foreach是没有返回值的,reduce是的回调函数中,是有四个参数的,下面说一下他们的基本用法

 
map:    映射,可以对数组中每个元素进行操作,并逐一返回,生成一个理想的新数组
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)
reduce:
    接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始合并,最终为一个值。
 
 callback(执行数组中每个值的函数,包含四个参数)        
     previousValue(上一次调用回调函数返回的值,或者是提供的初始值(initialValue))
     currentValue(数组中当前被处理的元素)
     index(当前元素在数组中的索引)
    array(调用reduce的数组)      
 
reduce可以传一个初始值,也可以不传,直接,将previousValue当做初始值
初始值可以传任何类型的值
// 不传递初始值,直接以数组内的第一个元素为初始值。没传递初始值时,第一个参数就是上一次回调返回的值,这里的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的使用的更多相关文章

  1. 高阶函数-map/filter/reduce

    什么样的函数叫高阶函数: 条件:1.函数接受函数作为参数 2.函数的返回值中包含函数 高阶函数之----map函数 map(func, *iterables) --> map objectnum ...

  2. 高阶函数map(),filter(),reduce()

    接受函数作为参数,或者把函数作为结果返回的函数是高阶函数,官方叫做 Higher-order functions. map()和filter()是内置函数.在python3中,reduce()已不再是 ...

  3. 高阶函数map,filter,reduce的用法

    1.filter filter函数的主要用途是对数组元素进行过滤,并返回一个符合条件的元素的数组 let nums = [10,20,30,111,222,333] 选出nums中小于100的数: l ...

  4. Python高阶函数map、reduce、filter、sorted的应用

    #-*- coding:utf-8 -*- from selenium import webdriver from selenium.webdriver.support.wait import Web ...

  5. JS高阶函数--------map、reduce、filter

    一.filter filter用于对数组进行过滤.它创建一个新数组,新数组中的元素是通过检查指定数组中符合条件的所有元素. 注意: filter() 不会对空数组进行检测. 注意: filter() ...

  6. python的高阶函数(map,filter,sorted,reduce)

    高阶函数 关注公众号"轻松学编程"了解更多. 1.MapReduce MapReduce主要应用于分布式中. 大数据实际上是在15年下半年开始火起来的. 分布式思想:将一个连续的字 ...

  7. js高阶函数map和reduce

    map 举例说明,比如我们有一个函数f(x)=x2,要把这个函数作用在一个数组[1, 2, 3, 4, 5, 6, 7, 8, 9]上,就可以用map实现如下: 由于map()方法定义在JavaScr ...

  8. python学习笔记1 -- 函数式编程之高阶函数 map 和reduce

    我用我自己,就是高阶函数,直接表现就是函数可以作为另一个函数的参数,也可以作为返回值 首先一个知识点是 函数的表现形式,印象中的是def  fw(参数)这种方式定义一个函数 python有很多的内置函 ...

  9. python之高阶函数--map()和reduce()

    以下为学习笔记:来自廖雪峰的官方网站 1.高阶函数:简单来说是一个函数里面嵌入另一个函数 2.python内建的了map()和reduce()函数 map()函数接收两参数,一个是函数,一个是Iter ...

随机推荐

  1. reorder-list leetcode C++

    Given a singly linked list L: L 0→L 1→-→L n-1→L n, reorder it to: L 0→L n →L 1→L n-1→L 2→L n-2→- You ...

  2. QuantumTunnel:内网穿透服务设计

    背景 最近工作中有公网访问内网服务的需求,便了解了内网穿透相关的知识.发现原理和实现都不复杂,遂产生了设计一个内网穿透的想法. 名字想好了,就叫QuantumTunnel,量子隧道,名字来源于量子纠缠 ...

  3. [源码解析] PyTorch 如何使用GPU

    [源码解析] PyTorch 如何使用GPU 目录 [源码解析] PyTorch 如何使用GPU 0x00 摘要 0x01 问题 0x02 移动模型到GPU 2.1 cuda 操作 2.2 Modul ...

  4. 【SVG】为了前端页面的美丽,我选择学习SVG

    [SVG]为了前端页面的美丽,我选择学习SVG 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 说明 SVG在之前自学的过程中, ...

  5. IDEA 设置Java项目使用的JDK版本 最全篇

    1. File -> Project Setting -> Project : 2. File ->Project Setting -> Modules 3. File -&g ...

  6. 微信小程序(六)

    MINA 框架: 启动: 冷启动,热启动 加载: 生命周期 路由: 事件: 事件时视图层到逻辑层的通信方式 事件可以将用户的行为反馈到逻辑层进行处理 事件可以绑定在组件上,触发事件后就会执行逻辑层对应 ...

  7. 印象最深的一个bug:sessionStorage缓存在移动端失效

    无bug,不程序:作为程序员的我,不是修bug就是在写bug的路上. 移动端sessionStorage缓存失效是我"印象最深的一个bug"之一,为啥呢,因为这个问题导致我加班到很 ...

  8. 从零搭建vsftpd

    先吐槽一下这个工具,配置繁琐,限制规则复杂,报错信息不够详细,学起来吃力. 准备工作 [root@vsftp-server ~]# mkdir /data/ #创建ftp目录 [root@vsftp- ...

  9. Mybatis动态传入tableName--非预编译(STATEMENT)

    在使用Mybatis过程中,你可以体会到它的强大与灵活之处,由衷的为Mybatis之父点上999个赞!在使用过程中经常会遇到这样一种情况,我查询数据的时候,表名称是动态的从程序中传入的,比如我们通过m ...

  10. [luogu7418]Counting Graphs P

    参考[luogu7417],同样求出最短路,得到二元组$(x,y)$并排序,记$tot_{(x,y)}$为$(x,y)$的数量 其中所给的两个条件,即分别要求: 1.$(x,y)$只能和$(x\pm ...