数组操作中有一些我们不常用的方法,但是往往有些开发场景是可以使用它们,方便我们代码开发,简化代码。然而我们不了解它们就会自己写遍历循环写一堆代码来实现这些场景,显得代码太low。比如计算数组中所有项的总数,不知道reduce方法,只能这些计算总数,如下:

const data = [1, 2, 3, 4];
let sum = 0;
data.forEach(element => { // 10sum = sum + element;
})

然而如果我们了解reduce方法,则可以一行实现计算总数的效果,如下:

const sum = data.reduce((perv, curr) => perv + curr, 0) // 10

下面我们列举一些有用的Array提供的方法:

reduce: 可以为数组中的每个元素提供一个由自己定义的执行函数,和上一个元素的执行函数的返回值进行计算等操作函数,最后生成个单个值。因此它可以做很多事,比如上面的例子,每个元素进行求和操作,求积、去重、降维等等操作。它的定义格式如下:

Array.reduce(function(perv, curr, currIndex, array), initialValue)

perv:必填的,前一个执行函产生的返回值。
curr:必填的,当前遍历的数组元素。
currIndex:可选的,当前遍历的数组元素索引。
array:可选的,当前遍历的数组元素所属的数组。 initialValue:可选的,初始值。

如下通过reduce实现二维数组降维操作。

const data = [[1, 2], [3, 4], [5, 6]];
data.reduce((prev, curr) => prev.concat(curr), []); // [1, 2, 3, 4, 5, 6]

flatMap:也可以实现数组的降维,它是降维和map遍历的结合体,我们可以通过它可以遍历一个数组,返回一个新的数组,也可以过滤、插入。flatMap对数组的每个成员执行一个我们定义的函数,相当于执行map(),然后对返回值组成的数组执行扁平化也就是降维处理,该方法返回一个新数组,不改变原数组。

还是上面的降维操作

const data = [[1, 2], [3, 4], [5, 6]];
data.flatMap(element => element); // [1, 2, 3, 4, 5, 6]

过滤操作

const data = [1, 2, 3, 4, 5, 6];
data.flatMap(element => element == 4 ? [] : [element]); // [1, 2, 3, 5, 6]

注意它的每一项执行函数都得返回一个数组。

总结

上面两个是我感觉我们可能不长使用的两个非常有用的方法,当然Array还提供了很多小方法,比如删除最后一个元素pop()、反转数组reverse()、排序sort()、连接成字符串join()等等方法。我们要在开发中灵活使用这些方法,减少代码的重复性。美化我们的代码。

JS 不常用的一些Array方法相关推荐

  1. 总结JS中常用的数组的方法大全

    总结JS中常用的数组方法 JS中常用的数组方法总结 数组(Array)是一种复杂的数据类型,它属于Object(对象)类型,用来将一组数组合在一起,通过一个变量就可以访问一组数据.在使用数组时,经常会 ...

  2. JS中常用的函数求和方法总结【五种方法】

    本文实例总结了JS数组求和的常用方法.分享给大家供大家参考,具体如下: 题目描述 计算给定数组 arr 中所有元素的总和 输入描述: 数组中的元素均为 Number 类型 输入例子: sum([ 1, ...

  3. js中常用的Math函数方法

     1.Math.abs():  返回绝对值 console.log(Math.abs(-1));//1 console.log(Math.abs('1.2'));//1.2,对于字符串会先转换成num ...

  4. js中text方法是啥意识_一盏茶的时间,快速捕获JS中常用的方法(细心整理,持续更新ing)...

    不知不觉上班一周辽-趁着大好周末,小编挣扎着从床上爬起来,决定对前端日常编程中常用到的一些方法做一个系统的整合. 有些人或许会觉得忘了百度就完事儿,no no no!这事儿小编真的亲践过好多次,百度一 ...

  5. JS实现深拷贝常用的几种方法

    JS实现深拷贝常用的几种方法 <!DOCTYPE html> <html lang="en"> <head><meta charset=& ...

  6. js中常用的对象—String的属性和方法

    今天说一下,js中常用的内置对象--String对象 它有以下几个常用的属性: length prototype 有以下几个常用的方法: parseInt()转换为数字 parseFloat()转换为 ...

  7. js中常用的数组和字符串方法

    一:js中常用的数组方法 <script>//函数声明式中的方法const arr=[1,3,6,9,15,19,16];//函数的所有方法 map(),reduce(),filter() ...

  8. 08-数组中常用的属性及方法

    08-数组中常用的属性及方法 创建: 使用 JavaScript 关键词 new 使用数组文本创建 //数组中的方法: toString() 把数组转换为数组值(逗号分隔)的字符串. join() 方 ...

  9. JS数组与对象的遍历方法大全

    本文简单解析各种数组和对象属性的遍历方法: 原生for循环.for-in及forEach ES6 for-of方法遍历类数组集合 Object.key()返回键名的集合 jQuery的$.each() ...

最新文章

  1. LeetCode简单题之二进制矩阵中的特殊位置
  2. 多路复用 I/O 模型详解, 为什么他能支持更高的并发
  3. angular2 step by step #1 - environment setup
  4. Cookie获取用户的访问记录
  5. npm 打包vue,错误 errno 126 / 清空node_modules目录
  6. nodejs mysql 注入_node.js sql 注入攻击防御方法 (sql Injection)
  7. qt linux webservice,Qt实现访问WebService
  8. docker mysql主从_使用docker 实现MySQL主从同步/读写分离
  9. 循环结构c语言乘电梯,C语言循环结构练习题.doc
  10. BOMTool更新到1.3.0.10
  11. 通过脚本生成Zabbix Screen报错Incorrect value for field vsize
  12. 国内趋于概念化的 “数据分析”在硅谷是怎样真正落地的?
  13. notebook打开外部文件_NOTEBOOK文件扩展名 - 什么是.notebook以及如何打开? - ReviverSoft...
  14. varchar2(数值)和varchar2(数值 char)的说明
  15. sierpinski三角形的维数_遥感图象分形维数的几种估计算法研究
  16. HoRNet SongKey MKIII Mac - 实时调性和弦检测
  17. 入侵大型网站的完整思路
  18. Accessorize to a Crime: Real and Stealthy Attacks on State-of-the-Art Face Recognition
  19. phalapi可以依赖注入么_PhalApi:[2.11] 核心思想:DI依赖注入 让资源更可控
  20. CVE-2017-12635+12636 复现+反弹shell

热门文章

  1. 3D Game Pr ramming Design(五):与游戏世界交互(对象池)
  2. 消防物联网通过工业网关实现快速告警提升消防安全
  3. 蓝桥杯Python这一篇就够了-训练系统题库合集(包括VIP试题)数据结构与算法
  4. Android通用组件设计案例
  5. python所有模块图解_Python pandas模块21个常用操作可视化图解
  6. 自动化点焊流水线(鑫金雨)非标自动化解决方案
  7. Google Play 隐私策略
  8. SQL Server 2014 安装图文
  9. 深入理解机器学习——类别不平衡学习(Imbalanced Learning):应用领域
  10. RSA加密明文密码传输