JavaScript 数组方法filter和reduce
前言
在ES6新增的数组方法中,包含了多个遍历方法,其中包含了用于筛选的filter和reduce
filter
主要用于筛选数组的filter方法,在使用中,不会改变原数组,同时会将符合筛选条件的元素,放入新的数组进行返回。
/***
* @item 数组元素
* @index 遍历数组下标
* @thisArr 当前数组
*/
let arr1 = [1, 2, 3, 4, 5];
let newArr1 = arr1.filter((item, index, thisArr) => {
console.log(item);
console.log(index);
console.log(thisArr);
return item > 2;
})
console.log(arr1);
console.log(newArr1);`
上面的代码,运行之后,可以看到原来的数组arr1没有发生改变,而newArr1用于接收符合筛选条件的数组
// [1, 2, 3, 4, 5] arr1
// [3, 4, 5] newArr1
reduce
不同于map和filter这类遍历方法,reduce的语法较为特殊一点
语法:
array.reduce(function(total,currentValue,currentIndex,thisArr){},initValue);
@function回调函数作为第一个参数,
total作为返回值或者初始值进行返回
currentValue当前遍历的元素
currentIndex当前遍历元素下标
thisArr为当前执行操作的数组。
initValue是作为传递给函数的初始值
数组求和
// 数组求和
let arr1 = [1, 2, 3, 4, 5]
let totals = arr1.reduce(function (prev, next) {
console.log(prev);
console.log(next);
return prev + next;
}, 0)
console.log(totals)
筛选首字母是否是含有b字母
let arr = ['beep', 'boop', 'foo', 'bar'];
console.log(arr.reduce((acc, val) => (val[0] === 'b' && acc.push(val), acc), []));
// 进阶每个数是否含有'b'
arr.reduce((acc, val) =>
(val.indexOf('b') >-1 && acc.push(val), acc),
[])
除了数组求和之外,reduce还可以处理数组去重,遍历最大值最小值的操作
同时还能已高阶函数的形式供其他函数进行调用。
最后
reduce和filter作为ES6中数组新增的方法,在面试和开发中经常会遇到,可以通过这两个函数结合其他类似map等新方法去处理一些较为复杂的数据。
文章个人博客地址:react 16.8版本新特性以及对react开发的影响
JavaScript 数组方法filter和reduce的更多相关文章
- JavaScript数组方法--filter、find、findIndex
继续数组方法,今天应该到filter了. filter:filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素. 使用: var words = ['spray', 'lim ...
- 【译】你应该了解的JavaScript数组方法
让我们来做一个大胆的声明:for循环通常是无用的,而且还导致代码难以理解.当涉及迭代数组.查找元素.或对其排序或者你想到的任何东西,都可能有一个你可以使用的数组方法. 然而,尽管这些方法很有用,但是其 ...
- JavaScript数组方法大全(推荐)
原网址:http://www.jb51.net/article/87930.htm 数组在笔试中经常会出现的面试题,javascript中的数组与其他语言中的数组有些不同,为了方便之后数组的方法学习, ...
- 2018.2.27 JavaScript数组方法应用
JavaScript数组方法应用 1.找出元素item在给定数组arr中的位置 function indexOf(arr,item){ return arr.indexOf(item); } func ...
- JavaScript数组方法详解
JavaScript数组方法详解 JavaScript中数组的方法种类众多,在ES3-ES7不同版本时期都有新方法:并且数组的方法还有原型方法和从object继承的方法,这里我们只介绍数组在每个版本中 ...
- JavaScript数组方法大集合
JavaScript数组方法集合 本文总结一下js数组处理用到的所有的方法.自己做个笔记. 数组方法 concat() 合并两个或多个数组 concat()能合并两个或者多个数组,不会更改当前数组,而 ...
- 一站式超全JavaScript数组方法大全
一站式JavaScript数组方法大全(建议收藏) 方法一览表 详细操作 本人总结了JavaScript中有关数组的几乎所有方法(包含ES6之后新增的),并逐一用代码进行演示使用,希望可以帮助大家! ...
- JavaScript数组方法--every、some、fill
接上一篇,JavaScript数组方法--concat.push,继续其他的数组方法. every:every() 方法测试数组的所有元素是否都通过了指定函数的测试. 先看其使用方法: functio ...
- JavaScript 数组方法处理字符串 prototype
js中数组有许多方法,如join.map,reverse.字符串没有这些方法,可以“借用”数组的方法来处理字符串. <!doctype html> <html lang=" ...
随机推荐
- 学习jsp篇:jsp Cookie介绍
这篇博客介绍下Cookie,JSP中比较重要的知识点Session,Cookie,表单数据,过滤器,文件上传.而Session和Cookie一般放在一起讲,在介绍cookie之前,要先介绍下Cooki ...
- 类(静态)变量和类(静态)static方法以及main方法、代码块,final方法的使用,单例设计模式
类的加载:时间 1.创建对象实例(new 一个新对象时) 2.创建子类对象实例,父类也会被加载 3.使用类的静态成员时(静态属性,静态方法) 一.static 静态变量:类变量,静态属性(会被该类的所 ...
- JVM的监控
# Table of Contents * 一.jvm常见监控工具&指令 * 1. jps:jvm进程状况工具 * 2.jstat: jvm统计信息监控工具 * 3.jinfo: java配置 ...
- 渗透测试之本地文件包含(LFI)
一.本地文件包含 本地文件包含漏洞指的是包含本地的php文件,而通过PHP文件包含漏洞入侵网站,可以浏览同服务器所有文件,并获得webshell. 看见?page=标志性注入点,提示我们输入?=pag ...
- 使用工具john破解系统密码
下载解压得到一个存在着hash值的passwd的文件,还有一个压缩包解压得到的是一个密码本,应该就是需要使用爆破的密码本了 放在kali里面,根据题目的要求,将root的hash复制下来然后输入到一个 ...
- [杂记]对RSA算法的数学原理的一点思考
- 基于IPv6的RIPng路由协议测试——信而泰网络测试仪实操
关键词 IPv6; RIPng; 协议测试; 内部网关协议; 外部网关协议 前言:在国际性网络中,如因特网,拥有很多应用于整个网络的路由选择协议.形成网络的每一个自治系统(AS),都有属于自己的路由选 ...
- Keepalived配置重载(reload)实现方法
一.前言 Keepalived运行过程中,可能存在更改配置的需求,例如修改virtual_ipaddress,virtual_router_id,priority等参数.在keepalived不重启, ...
- 【C# .Net GC】条件自动垃圾回收 HandleCollector类
条件自动回收 达到指定条件后自动执行GC回收垃圾. GC中的方法AddMemoryPressure和RemoveMemoryPressure 本机资源有时会消耗大量内存,但用于包装它的托管对象只占用很 ...
- 【C# 集合】Hash哈希函数 |散列函数|摘要算法
希函数定义 哈希函数(英語:Hash function)又称散列函数.散列函数.摘要算法.单向散列函数.散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来.该函数将数据打乱混合,重新 ...