好家伙,本篇为MDN文档数组方法的学习笔记

Array.prototype.reduce() - JavaScript | MDN (mozilla.org)

数组方法这块的知识缺了,补一下

 

1.map()方法

map() 方法创建一个新数组,这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成。

const array1 = [1, 4, 9, 16];

const array2 = array1.map(Math.sqrt);

console.log(array2);

 

 

const array1 = [1, 3, 5, 9];

const array2 = array1.map((x) =>
x * 2
); console.log(array2);

 

 map() 方法是一个迭代方法。它为数组中的每个元素调用一次提供的 callbackFn 函数,并用结果构建一个新数组。

这个必须要注意一下,不同于其他的数组方法,这里返回的是一个新的数组,而不是对原来的数组进行操作

const array1 = [1, 4, 9, 16];

const array2 = array1.map(Math.sqrt);

const array3 = array1.map((x) =>
x * 2
);
console.log(array1);
console.log(array2);
console.log(array3);

 

 

 

2.foreach()方法

forEach() 方法对数组的每个元素执行一次给定的函数。

const array1 = [1, 4, 9,16];

array1.forEach((x) => console.log(x));

 

2.2.区别与于map()方法,forEach方法是对原先的数组的每一项调用方法,不产生新的数组

const array1 = [1, 4, 9, 16];

let array2 = array1.forEach((x) => console.log(x));

console.log(array2);

 

2.3.给定函数的参数

// element
// 数组中正在处理的当前元素。
// index
// 数组中正在处理的当前元素的索引。
// array
// 调用了 forEach() 的数组本身。

 

2.4.forEach() 期望的是一个同步函数,它不会等待 Promise。

3.reduce()方法

 reduce() 方法对数组中的每个元素按序执行一个由您提供的 reducer 函数,每一次运行 reducer 会将先前元素的计算结果作为参数传入,最后将其结果汇总为单个返回值。

这个方法唯一比较难记的就是参数了

callbackFn

一个“reducer”函数,包含四个参数:

  • previousValue:上一次调用 callbackFn 时的返回值。在第一次调用时,若指定了初始值 initialValue,其值则为 initialValue,否则为数组索引为 0 的元素 array[0]
  • currentValue:数组中正在处理的元素。在第一次调用时,若指定了初始值 initialValue,其值则为数组索引为 0 的元素 array[0],否则为 array[1]
  • currentIndex:数组中正在处理的元素的索引。若指定了初始值 initialValue,则起始索引号为 0,否则从索引 1 起始。
  • array:用于遍历的数组。

initialValue 可选

作为第一次调用 callback 函数时参数 previousValue 的值。若指定了初始值 initialValue,则 currentValue 则将使用数组第一个元素;

否则 previousValue 将使用数组第一个元素,而 currentValue 将使用数组第二个元素。

 (MDN文档真是太贴心了)

3.1.用reduce()实现简单的叠加器

let sum = [0, 1, 2, 3].reduce(function (previousValue, currentValue) {
return previousValue + currentValue
}, 0) console.log(sum)

第139篇:JS数组常用方法(map(),reduce(),foreach())的更多相关文章

  1. 第一百一十四篇: JS数组Array(三)数组常用方法

    好家伙,本篇为<JS高级程序设计>第六章"集合引用类型"学习笔记   1.数组的复制和填充 批量复制方法 copyWithin(),以及填充数组方法fill(). 这两 ...

  2. 优化 JS 条件语句及JS 数组常用方法, ---- 看完绝对对日后开发有用

    前言: 日常所说的优化优化.最后我们到底优化了哪些,不如让我们从代码质量开始:个人觉得简洁简化代码其实觉得存在感挺强烈的QAQ 1. 获取URL中 ?后的携带参数: 这是我见过最简洁的了,若有更简洁的 ...

  3. es6 js数组常用方法

    一:会改变自身的方法 1.array.push(element1, ...elementN) 添加一个或多个元素到数组的末尾,并返回数组新的长度 2.array.unshift(element1, . ...

  4. 数组遍历 map()、forEach() 及 字符串切割 split() / 字符串截取 slice()、substring()、substr()

    JS数组遍历的几种方式 JS数组遍历,基本就是for,forin,foreach,forof,map等等一些方法,以下介绍几种本文分析用到的数组遍历方式以及进行性能分析对比 第一种:普通for循环 代 ...

  5. js数组中indexOf/filter/forEach/map/reduce详解

    今天在网上看到一篇帖子,如题: 出处:前端开发博客 (http://caibaojian.com/5-array-methods.html) 在ES5中一共有9个Array方法,分别是: Array. ...

  6. JS Array常用方法indexOf/filter/forEach/map/reduce详解

    Array共有九个方法   Array.prototype.indexOf Array.prototype.lastIndexOf Array.prototype.every Array.protot ...

  7. JS进阶篇--JS数组reduce()方法详解及高级技巧

    基本概念 reduce() 方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值. reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被 ...

  8. Js数组的map,filter,reduce,every,some方法

    var arr=[1,2,3,4,5,6]; res = arr.map(function(x){return x*x}) [1, 4, 9, 16, 25, 36] res = arr.filter ...

  9. js数组常用方法汇总

    判断某个对象是否是数组: instanceof.Array.isArray() 对于一个网页或者一个全局作用域可以使用instanceof操作符. if(value instanceof Array) ...

  10. JS数组常用方法总结

    JavaScript中创建数组有两种方式 (一)使用 Array 构造函数: var arr1 = new Array(); //创建一个空数组 var arr2 = new Array(20); / ...

随机推荐

  1. This class is not trusted to be serialized as ObjectMessage payload.ActiveMQ序列化设置

    引子 ObjectMessage引入的生产者和消费者之间的类路径耦合,ActiveMQ支持他们作为JMS规范的一部分. ObjectMessage对象依赖marshal/unmarshal进行java ...

  2. SQL无法解决 equal to 运算中 "Chinese_PRC_CI_AS" 和 "SQL_Latin1_General_CP1_CI_AS" 之间的排序规则冲突

    在所在的SQL语句后面加上 COLLATE [排序规则]或者ALTER DATABASE [DBName] COLLATE Chinese_PRC_CI_AS

  3. redis的数据操作和python操作redis+关系非关系数据库差异

    关系型数据库(RMDBS) 数据库中表与表的数据之间存在某种关联的内在关系,因为这种关系,所以我们称这种数据库为关系型数据库. 典型:Mysql/MariaDB.postgreSQL.Oracle.S ...

  4. RHEL系列邮箱配置mail.rc和s-nail.rc

    RHEL8 1.首先安装postfix和mailx dnf install postfix mailx -y 2.开启postfix服务开机运行 systemctl enable --now post ...

  5. 人人皆可虚拟,直播还能这么玩?声网推出 MetaLive 元直播解决方案

    视频群聊.在线社交.电商带货.游戏竞技.......越来越多的场景融入了直播这一功能.无可厚非,直播可以拉近人与人间的距离,让彼此间的交流更具象.但传统直播场景更为强调主播个人的表现,用户多以围观.刷 ...

  6. day07-SpringBoot接收参数相关注解

    SpringBoot接收参数相关注解 1.基本介绍 SpringBoot接收客户端提交数据/参数会使用到相关注解 详解@PathVariable.@RequestHeader.@ModelAttrib ...

  7. MyBatis中的#和$有什么区别

    什么是MyBatis MyBatis是一款优秀的持久层框架,特别是在国内(国外据说还是 Hibernate 的天下)非常的流行,我们常说的SSM组合中的M指的就是#mybatis#. MyBatis支 ...

  8. Java面试——锁

    公平锁:是指多个线程按照申请锁的顺序来获取锁,有点先来后到的意思.在并发环境中,每个线程在获取锁时会先查看此锁维护的队列,如果为空,或者当前线程是等待队列的第一个,就占有锁,否则就会加入到等待队列中, ...

  9. PyQt5学习 (4)--QAbstractButton(下)

    QAbstractBUtton:   所有按钮控件的基类   提供按钮的通用功能   继承自QWidget   属于抽象类别,不能直接去使用,必须借助于子类(除非你觉得子类不够用,想自定义一个按钮) ...

  10. fastjson很好,但不适合我

    记者:大爷您有什么特长呀? fastjson:我很快. 记者:23423乘以4534等于多少? fastjson:等于2343. 记者:?? fastjson:你就说快不快吧! 这个略显马丽苏的标题, ...