数组的常用循环 map、reduce、filter、forEach

forEach map filter some every(参数都是一样的)

arr.forEach(回调函数,this指向) 一般第二个参数 this指向不使用

回调函数的参数一般是:value index arr(原始数组)

一般都会配合return使用

arr.forEach()和arr.map()的区别

arr.forEach()是和for循环一样,是代替for;

arr.map()是修改数组其中的数据,并返回新的数据

arr.forEach() 没有return , arr.map() 有return

1. arr.forEach(callback) : 遍历数组,无return,不修改原数组;相当于普通的for循环

let arr = [1, 2, 3, 4, 5]

arr.forEach((value, index, arr) => {

console.log(`value:${value},index:${index},arr:${arr}`)

})

// value:1, index:0, arr:1,2,3,4,5

// value:2, index:1, arr:1,2,3,4,5

// value:3, index:2, arr:1,2,3,4,5

// value:4, index:3, arr:1,2,3,4,5

// value:5, index:4, arr:1,2,3,4,5

复制代码

2. arr.map(callback): 映射数组(遍历数组),有return,返回一个新的数组

映射,返回一个由原数组中的 每个元素 调用一个 指定方法后 的返回值所组成的新数组

//案例1

let arr = [1, 2, 3, 4, 5]

let newArr=arr.map((value, index, array) => {

value = value * 2

})

console.log(arr) // [1, 2, 3, 4, 5]

console.log(newArr) // [2,4,6,8,10]

复制代码

3. arr.filter(callback) :过滤数组,返回一个满足要求的新数组,原数组不变

一般是过滤一些不合格的数据,如果回调函数返回true,那么数据中符合条件的数据就会被保存下来

//案例一

let arr = [1, 2, 3, 4, 5]

//返回value小于3的值

let arr1 = arr.filter(value => value < 3)

console.log(arr1) // [1, 2]

//案例二

let arr = [

{title: 'aa', hot: false},

{title: 'bb', hot: true},

{title: 'cc', hot: false},

]

//返回hot为true的数据

let newArr = arr.filter(val => val.hot);

console.table(newArr);

复制代码

4. arr.every(callback): 依据判断条件,数组的元素是否全满足,若满足则返回ture

类似于查找功能,如果数组中的每一个元素都符合条件,那么会返回true

let arr = [1,2,3,4,5]

let arr1 = arr.every( (i, v) => i < 3)

console.log(arr1) // false

let arr2 = arr.every( (i, v) => i < 10)

console.log(arr2) // true

复制代码

5. arr.some() 依据判断条件,数组的元素是否有一个满足,只要有一个满足则返回ture

类似于查找功能,如果数组中的 某一个元素 符合条件,那么会返回true

let arr = [1,2,3,4,5]

let arr1 = arr.some( (i, v) => i < 3)

console.log(arr1) // true

let arr2 = arr.some( (i, v) => i > 10)

console.log(arr2) // false

复制代码

6. arr.indexOf() 查找某个元素的索引值,若有重复的,则返回第一个查到的索引值,若不存在,则返回 -1

let arr = [1,2,3,4,5,2]

let arr1 = arr.indexOf(2)

console.log(arr1) // 1

let arr2 = arr.indexOf(9)

console.log(arr2) // -1

复制代码

7. arr.lastIndexOf() 和arr.indexOf()的功能一样,不同的是从后往前查找

8. arr.reduce(callback, initialValue):累加器 汇总数据

迭代数组的所有项,数组中的每个值(从左到右)的合并,最终计算为一个值

复制代码

8.1 callback回调函数的参数:上一个计算的值、当前值、当前值下标、原始数组

previousValue 必选,上一次调用回调返回的值,或者是提供的初始值(initialValue)

currentValue 必选 --数组中当前被处理的数组项

index 可选 --当前数组项在数组中的索引值

array 可选 --原数组

8.2 initialValue:初始化值(可选)

8.3 reduce执行过程

回调函数第一次执行时,preValue 和 curValue 可以是一个值

如果 initialValue 在调用 reduce() 时被提供,那么第一个 preValue 等于 initialValue ,并且curValue 等于数组中的第一个值;

如果initialValue 未被提供,那么preValue 等于数组中的第一个值

let arr = [1, 2, 3, 4, 5]

//计算数组中数据的和

let arr1 = arr.reduce((preValue, curValue) => preValue + curValue)

console.log(arr1) // 15

//计算数组中数据的和 设置了一个初始化数据 5

let arr2 = arr.reduce((preValue, curValue) => preValue + curValue, 5)

console.log(arr2) // 20

复制代码

es6 嵌套数组循环_ES6 常用数组循环相关推荐

  1. es6 取数组的第一个和最后一个_es6常用数组操作及技巧汇总

    定义数组 const array = [1, 2, 3]; 或者 const array = new Array(); array[0] = '1'; 建议尽量使用第一种形式定义数组,采用new的形式 ...

  2. php数组实例,php常用数组函数实例小结

    本文实例总结了php常用数组函数.分享给大家供大家参考,具体如下: 1. array array_merge(array $array1 [, array $array2 [, $array]]) 函 ...

  3. es6去除重复项_ES6 常用知识总结

    一.ES6简介 ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了.它的目标,是使得 JavaScript 语言可以用来 ...

  4. es6数组初始化_ES6 迭代器(Iterator)和 for...of循环使用方法

    一.什么是迭代器? 生成器 概念在Java,Python等语言中都是具备的,ES6也添加到了JavaScript中.Iterator可以使我们 不需要初始化集合,以及索引的变量 ,而是使用迭代器对象的 ...

  5. JavaScript 中的常用12种循环遍历(数组或对象)的方法

    1.for 循环 1 2 3 4 5 6 7 let arr = [1,2,3]; for (let i=0; i<arr.length; i++){  console.log(i,arr[i] ...

  6. week2__javaSE__选择控制语句__循环控制语句__数组__面向对象之封装

    选择控制语句(switch) 格式: switch(表达式为真){case 真值1:语句1;break;case 真值2:语句1;break;...default :语句n;break; } 注意事项 ...

  7. C语言基础1(数据类型、常变量、运算符、基本语句、选择结构、循环结构、数组、字符串、函数、指针)

    数据类型及运算 数据类型 一.整形(int) 整形变量的定义.输入和输出 打印格式 含义 %d 输出一个有符号的10进制int类型 %o(字母o) 输出8进制的int类型 %x 输出16进制的int类 ...

  8. java笔记(基础+修饰符+选择结构+分支结构+循环结构+方法+数组+面对对象+三大特性)

    文章目录 语言基础 变量 概念 全局变量 局部变量 实例变量 声明 数据类型 常用 基本数据类型 引用数据类型 Unicode编码表 ASCII字符表 运算符 算术运算符 赋值运算符 关系运算符 逻辑 ...

  9. 数组常见的遍历循环方法、数组的循环遍历的效率对比

    1 遍历数组的方法 1-1.for / while 最普通的循环 效率最高 兼容ie6 tips:for循环更适用于循环的开始和结束已知,循环次数固定的场合:while循环更适合于条件不确定的场合 1 ...

最新文章

  1. 如何解决组织协同?用智办事更简单!
  2. MySql数据库连接超时处理
  3. 【转】VS.NET2003 调试无法启动
  4. 前端学习(1662):前端系列实战课程之div跟随鼠标移动
  5. 【需求工程】需求分析的5W1H8C1D方法
  6. mysql连接代码_MySQL 表连接
  7. Solidity 0.5 address payable和address的区别是什么?
  8. 关于java中equals与==的区别的小实验
  9. 用netbeans开发Swing程序,添加自定义控件
  10. python type判断_python判断type与isinstance的区别
  11. 因为计算机中丢失MSVCp,无法启动此程序,因为计算机中丢失MSVCP140.dll的
  12. 联合循环——13(智慧电厂的发展与展望)
  13. wincc7.0显示无法访问服务器,WinCC 7.0 SP3 安装时提示网络连接不可用,无法安装...
  14. clonezilla(再生龙)克隆linux系统 操作指南
  15. HTML5期末大作业:在线音乐网站设计——简洁bootstrap响应式社交音乐网站模板html整站(38页) HTML+CSS+JavaScript
  16. 【快速上手教程1】疯壳·开源编队无人机-开机测试
  17. 金融业分布式数据库选型及HTAP场景实践
  18. 地图裁剪器,可以将图片裁剪成瓦片数据,主要用途是将高清卫星图像裁剪成瓦片图,可以做离线地图的开发,基于墨卡托坐标
  19. 大佬们的“受锤”往事
  20. input在python的意思_python中input是什么意思

热门文章

  1. android学习笔记---44_在线视频播放器,网络视频解析器,SurfaceView 控件使用方法
  2. sql 单表/多表查询去除重复记录
  3. jsp 如何自定义标签
  4. otsu算法_【车牌识别算法】
  5. 北京语言大学计算机科学与技术研究生好考吗,北京语言大学计算机科学与技术专业研究生培养方案...
  6. vs code c语言json文件配置,解析VScode在Windows环境下c_cpp_properties.json文件配置问题(推荐)...
  7. 影响页面布局的css属性,6 和页面布局有关的CSS属性(三)
  8. php排序order,#ThinkPHP#视图下order排序
  9. JAVA实现1到100的平方根之和_手算平方根和基于 Java BigInteger 的大整数平方根的实现...
  10. createbitmap 旋转90度_解决某些机型调用系统相机照片旋转的问题