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=" ...
随机推荐
- Swift逻辑分支
一. 分支的介绍 分支即if/switch/三目运算符等判断语句 通过分支语句可以控制程序的执行流程 二. if分支语句 和OC中if语句有一定的区别 判断句可以不加() 在Swift的判断句中必须有 ...
- android 安装gcc环境
看到了一篇关于Android上利用终端来使用gcc编译C/C++源程序的文章,我感到无比兴奋,所以立刻将我自己的安装过程记下来.那个后记也很有用的. gcc编译源代码需要创建临时文件,而gcc又只能安 ...
- Class.getResource和ClassLoader.getResource的路径写法
Java中取资源时,经常用到Class.getResource和ClassLoader.getResource,这里来看看他们在取资源文件时候的路径问题. Class.getResource(Stri ...
- gpg 使用入门
1. 生成秘钥 gpg --full-generate-key 等价于 gpg --full-gen-key Real name: yellowconvict为该秘钥的名字,也称为 USER-ID 在 ...
- VMware中Ubuntu18配置静态IP地址
1. VMware:编辑 -> 虚拟网络编辑器 -> 更改设置 2. 取消选中:使用本地DHCP服务将IP地址分配给虚拟机,并记住子网ip 3. 点击NAT设置,记住网关地址 正常情况下V ...
- Solution -「洛谷 P6021」洪水
\(\mathcal{Description}\) Link. 给定一棵 \(n\) 个点的带点权树,删除 \(u\) 点的代价是该点点权 \(a_u\).\(m\) 次操作: 修改单点点权. ...
- Dubbo基础三之配置方式简述
Dubbo基础一之实战初体验 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中,体验了两种配置方式一种注解一种xml.其中xml是在注解配置失败没有找到解决方法后选择xml替代体验的.那 ...
- unity3d导出xcode项目使用afnetworking 3框架导致_kUTTagClassMIMEType 问题解决方案
http://blog.csdn.net/huayu_huayu/article/details/51781953 (参考链接) Undefined symbols for architecture ...
- .Net Core AOP之AuthorizeAttribute
一.简介 在.net core 中Filter分为以下六大类: 1.AuthorizeAttribute(权限验证) 2.IResourceFilter(资源缓存) 3.IActionFilter(执 ...
- 【性能测试实战】jmeter + k8s + 微服务 + skywalking + efk,测试都在学的热门技术
原文持续更新完善:https://www.cnblogs.com/uncleyong/p/15475614.html 前言:当前的热门主流技术是哪些?测开为啥那么火?90%以上的测试对测开认识不准确 ...