es6 嵌套数组循环_ES6 常用数组循环
数组的常用循环 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 常用数组循环相关推荐
- es6 取数组的第一个和最后一个_es6常用数组操作及技巧汇总
定义数组 const array = [1, 2, 3]; 或者 const array = new Array(); array[0] = '1'; 建议尽量使用第一种形式定义数组,采用new的形式 ...
- php数组实例,php常用数组函数实例小结
本文实例总结了php常用数组函数.分享给大家供大家参考,具体如下: 1. array array_merge(array $array1 [, array $array2 [, $array]]) 函 ...
- es6去除重复项_ES6 常用知识总结
一.ES6简介 ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了.它的目标,是使得 JavaScript 语言可以用来 ...
- es6数组初始化_ES6 迭代器(Iterator)和 for...of循环使用方法
一.什么是迭代器? 生成器 概念在Java,Python等语言中都是具备的,ES6也添加到了JavaScript中.Iterator可以使我们 不需要初始化集合,以及索引的变量 ,而是使用迭代器对象的 ...
- 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] ...
- week2__javaSE__选择控制语句__循环控制语句__数组__面向对象之封装
选择控制语句(switch) 格式: switch(表达式为真){case 真值1:语句1;break;case 真值2:语句1;break;...default :语句n;break; } 注意事项 ...
- C语言基础1(数据类型、常变量、运算符、基本语句、选择结构、循环结构、数组、字符串、函数、指针)
数据类型及运算 数据类型 一.整形(int) 整形变量的定义.输入和输出 打印格式 含义 %d 输出一个有符号的10进制int类型 %o(字母o) 输出8进制的int类型 %x 输出16进制的int类 ...
- java笔记(基础+修饰符+选择结构+分支结构+循环结构+方法+数组+面对对象+三大特性)
文章目录 语言基础 变量 概念 全局变量 局部变量 实例变量 声明 数据类型 常用 基本数据类型 引用数据类型 Unicode编码表 ASCII字符表 运算符 算术运算符 赋值运算符 关系运算符 逻辑 ...
- 数组常见的遍历循环方法、数组的循环遍历的效率对比
1 遍历数组的方法 1-1.for / while 最普通的循环 效率最高 兼容ie6 tips:for循环更适用于循环的开始和结束已知,循环次数固定的场合:while循环更适合于条件不确定的场合 1 ...
最新文章
- 如何解决组织协同?用智办事更简单!
- MySql数据库连接超时处理
- 【转】VS.NET2003 调试无法启动
- 前端学习(1662):前端系列实战课程之div跟随鼠标移动
- 【需求工程】需求分析的5W1H8C1D方法
- mysql连接代码_MySQL 表连接
- Solidity 0.5 address payable和address的区别是什么?
- 关于java中equals与==的区别的小实验
- 用netbeans开发Swing程序,添加自定义控件
- python type判断_python判断type与isinstance的区别
- 因为计算机中丢失MSVCp,无法启动此程序,因为计算机中丢失MSVCP140.dll的
- 联合循环——13(智慧电厂的发展与展望)
- wincc7.0显示无法访问服务器,WinCC 7.0 SP3 安装时提示网络连接不可用,无法安装...
- clonezilla(再生龙)克隆linux系统 操作指南
- HTML5期末大作业:在线音乐网站设计——简洁bootstrap响应式社交音乐网站模板html整站(38页) HTML+CSS+JavaScript
- 【快速上手教程1】疯壳·开源编队无人机-开机测试
- 金融业分布式数据库选型及HTAP场景实践
- 地图裁剪器,可以将图片裁剪成瓦片数据,主要用途是将高清卫星图像裁剪成瓦片图,可以做离线地图的开发,基于墨卡托坐标
- 大佬们的“受锤”往事
- input在python的意思_python中input是什么意思
热门文章
- android学习笔记---44_在线视频播放器,网络视频解析器,SurfaceView 控件使用方法
- sql 单表/多表查询去除重复记录
- jsp 如何自定义标签
- otsu算法_【车牌识别算法】
- 北京语言大学计算机科学与技术研究生好考吗,北京语言大学计算机科学与技术专业研究生培养方案...
- vs code c语言json文件配置,解析VScode在Windows环境下c_cpp_properties.json文件配置问题(推荐)...
- 影响页面布局的css属性,6 和页面布局有关的CSS属性(三)
- php排序order,#ThinkPHP#视图下order排序
- JAVA实现1到100的平方根之和_手算平方根和基于 Java BigInteger 的大整数平方根的实现...
- createbitmap 旋转90度_解决某些机型调用系统相机照片旋转的问题