JavaScript中数组常用的7种迭代处理方法总结
本篇文章给大家带来了关于javascript的相关知识,其中主要介绍了关于JavaScript中数组常用的7种迭代处理方法的相关问题,下面一起来看一下,希望对大家有帮助。
【相关推荐:javascript视频教程、web前端】
1.map()方法
1.1应用场景:利用某种规则映射一个新的数组(遍历数组中每一个元素,并对每一个元素做对应的处理,返回一个新的数组)
例如:将数组中的每一个元素+1
let arr = [10, 20, 30, 40, 50] //item数组每一项的值,index数组的下标 let newArr = arr.map((item, index) => { return item + 1 }) console.log(newArr)//[11, 21, 31, 41, 51]
1.2注意点:
(1).回调函数的执行次数等于数组长度
(2).map函数返回的新数组长度等于原数组长度
(3).回调函数中一定要return,返回的是当前遍历的元素值,如果不return,新数组的每一个元素都是undefined
2.forEach()方法
2.1应用场景:用于遍历数组,相当于for循环的另一种写法
let arr = [10, 20, 30, 40, 50] arr.forEach((item, index) => { console.log(`下标为${index}的元素是${item}`) }) //控制台打印结果 //下标为0的元素是10 //下标为1的元素是20 //下标为2的元素是30 //下标为3的元素是40 //下标为4的元素是50
2.2注意点:
(1).回调函数的执行次数等于数组长度
(2).forEach函数没有返回值
(3).回调函数不需要return,就算手动return,也不会结束循环
3.filter()方法
3.1应用场景:用于筛选数组中满足条件的元素,返回筛选后的新数组
例如:找出数组中的偶数
let arr = [1, 2, 3, 4, 5, 6, 7, 8] let newArr = arr.filter((item, index) => { //return一个布尔值 return item % 2 == 0 }) console.log(newArr)//[2,4,6,8]
3.2注意点:
(1).回调函数的执行次数等于数组长度
(2).filter函数返回的新数组长度不等于原数组长度
(3).回调函数一定要return一个布尔值,如果return的值为true,当前遍历的元素就会添加到新数组中,如果return的值为false,则不会添加到新数组中
4.some()方法
4.1应用场景:用于判断数组中是否存在满足条件的元素
例如:判断数组中是否存在大于100的数(存在,返回值为true,不存在,返回值为false)
let arr = [10, 50, 150, 200, 60, 30] let bol = arr.some((item, index) => { return item > 100 }) console.log(bol)//true
4.2注意点:
(1).回调函数的执行次数不等于数组长度
(2).some函数的返回值是一个布尔值
(3).回调函数返回布尔类型值用于结束遍历,如果return的值为true,则遍历结束,且some函数的返回值为false,如果return的值为false,则继续遍历,且some函数的返回值为false
5.every()方法
5.1应用场景:用于判断数组中是否所有元素都满足条件(开关思想),与some()方法功能相似,可以对比理解
例如:判断数组中是否所有元素都大于100(都大于100,返回值为true,只要有一个元素小于100,则返回值为false)
let arr = [10, 50, 150, 200, 60, 30] let bol = arr.every((item, index) => { return item > 100 }) console.log(bol)//false
5.2注意点:
(1).回调函数的执行次数不等于数组长度
(2).every函数的返回值是一个布尔值
(3).回调函数返回布尔类型值用于结束遍历,如果return的值为true,则遍历继续,且every函数的返回值为true,如果return的值为false,则继续结束,且every函数的返回值为false
6.findIndex()方法
6.1应用场景:适用于数组中元素为对象类型,比传统的for循环要高效
6.2作用:获取符合条件的第一个元素位置(下标)
let arr = [ { name: '张三', age: 20 }, { name: '李四', age: 30 }, { name: '王五', age: 25 }, { name: '赵六', age: 33 }, { name: '小七', age: 10 }, ]; let i=arr.findIndex((item,index)=>{ return item.age>30 }) //打印的i为符合条件的第一个元素下标 console.log(i)//3
6.2注意点:
(1).如果return的值为true,则遍历结束,findIndex方法返回值为当前的index值;如果return的值为false,则遍历继续,如果数组全部遍历完还是没有返回true,则findIndex方法返回值为-1
7.reduce()方法
7.1应用场景:数组求和/平均值/最大值/最小值
7.2作用:遍历数组元素,为每一个元素执行一次回调函数
//数组求和 let arr = [10, 20, 30, 40] //sum:初始值,默认为数组的第一个元素 //item:数组的每一个元素,默认为数组的第二个元素 let getSum = arr.reduce((sum, item) => { //这里必须要return,相当于把本次计算得结果赋值给下一次得sum : sum = sum + item; return sum + item }) console.log(getSum)//100
7.2注意点:
(1).最好给一个初始值,避免空数组报错
//数组求和 let arr = [10, 20, 30, 40] //加了初始值0之后,此时sum开始默认为0,item则默认为数组的第一个元素 let getSum = arr.reduce((sum, item) => { //这里必须要return,相当于把本次计算得结果赋值给下一次得sum : sum = sum + item; return sum + item },0) console.log(getSum)//100 //数组求最大值 let max = arr.reduce((sum, item) => { return Math.max(sum, item) }, 0) console.log(max)//40
这里特别注意的是,每一轮的sum值是上一轮的返回值
8.总结
扩展示例:
arr.reduce(function(sum,value,index,arr){}) 方法
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
reduce() 可以作为一个高阶函数,用于函数的 compose。
注意: reduce() 对于空数组是不会执行回调函数的。
参数 | 详情 |
---|---|
sum第一个参数 | 第一次为数组的第一个数组元素的值(下标为0),依次往后是返回计算结果的值 |
value 第二个参数 | 开始为数组元素第二个的值(下标为1),依次往后循环 |
index第三个参数 | 依次为数组元素的下标 |
arr第四个参数 | 为数组的整体 |
initialValue | 为第一参数的默认值,设置的话,第一个参数的默认值为initialValue的值,则 第二个参数则将使用数组第一个元素(下标为0 ),没有设置的话,第一个参数将使用数组第一个元素,而 第二个参数 将使用数组第二个元素。 |
function sum(arr){ return arr.reduce(function(sum,value,index,arr){ console.log(sum); console.log(value); console.log(index); console.log("~~") console.log(arr) return sum+y },initialValue)}console.log(sum([1,2,3,4,5]))
arr.every(function(value,index,arr){})
every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。 every() 方法使用指定函数检测数组中的所有元素: 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。 如果所有元素都满足条件,则返回 true。 注意: every() 不会对空数组进行检测。 注意: every() 不会改变原始数组。
参数 | 详情 |
---|---|
value | 数组元素 |
index | 数组下标 |
arr | 当前数组的整体 |
function sum(arr){ return arr.every(function(value,index,arr){ console.log(value); console.log(index); console.log("~~") return value>=1 })}console.log(sum([1,2,3,4,5]))
arr.some(function(value,index,arr){})
some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。 some() 方法会依次执行数组的每个元素: 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。 如果没有满足条件的元素,则返回false。 注意: some() 不会对空数组进行检测。 注意: some() 不会改变原始数组。
参数 | 详情 |
---|---|
value | 数组元素 |
index | 数组下标 |
arr | 当前数组的整体 |
function sum(arr){ return arr.some(function(value,index,arr){ console.log(value); console.log(index); console.log("~~") return value>=1 })}console.log(sum([1,2,3,4,5]))
arr.filter(function(value,index,arr){})
filter()方法过滤查找全部,对数组元素进行判断,满足条件的会组成一个新的数组返回 注意:如果都不符合条件,会得到一个空数组 注意:如果所有元素都符合条件,会得到一个包含所有元素的新数组它与原数组进行===或==比较会得到false
参数 | 详情 |
---|---|
value | 数组元素 |
index | 数组下标 |
arr | 当前数组的整体 |
function sum(arr){ return arr.filter(function(value,index,arr){ console.log(value); console.log(index); console.log("~~") return value>=5 })}console.log(sum([1,2,3,4,5]))
arr.map(function(value,index,arr){})
map对数组元素进行循环,有返回值,返回值会组成一个新的数组 注意:map可以处理一对一的元素映射
参数 | 详情 |
---|---|
value | 数组元素 |
index | 数组下标 |
arr | 当前数组的整体 |
const source = [1,2,3,4]const target = source.map(n=>({id:n,label:`label${n}`}))console.log(target)
function sum(arr){ return arr.map(function(value,index,arr){ console.log(value); console.log(index); console.log("~~") return value>=1 })}console.log(sum([1,2,3,4,5]))
arr.forEach(function(value,index,arr){})
forEach()方法对数组元素进行循环,没有返回值和for循环的功能一样,但是不能使用break和countinue 注意:map和forEach的区别:map有返回值,forEach没有返回值
参数 | 详情 |
---|---|
value | 数组元素 |
index | 数组下标 |
arr | 当前数组的整体 |
function sum(arr){ return arr.forEach(function(value,index,arr){ console.log(value); console.log(index); console.log("~~") return value>=1 })}console.log(sum([1,2,3,4,5]))
【相关推荐:javascript视频教程、web前端】
以上是JavaScript中数组常用的7种迭代处理方法总结的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

如何使用WebSocket和JavaScript实现在线语音识别系统引言:随着科技的不断发展,语音识别技术已经成为了人工智能领域的重要组成部分。而基于WebSocket和JavaScript实现的在线语音识别系统,具备了低延迟、实时性和跨平台的特点,成为了一种被广泛应用的解决方案。本文将介绍如何使用WebSocket和JavaScript来实现在线语音识别系

WebSocket与JavaScript:实现实时监控系统的关键技术引言:随着互联网技术的快速发展,实时监控系统在各个领域中得到了广泛的应用。而实现实时监控的关键技术之一就是WebSocket与JavaScript的结合使用。本文将介绍WebSocket与JavaScript在实时监控系统中的应用,并给出代码示例,详细解释其实现原理。一、WebSocket技

如何利用JavaScript和WebSocket实现实时在线点餐系统介绍:随着互联网的普及和技术的进步,越来越多的餐厅开始提供在线点餐服务。为了实现实时在线点餐系统,我们可以利用JavaScript和WebSocket技术。WebSocket是一种基于TCP协议的全双工通信协议,可以实现客户端与服务器的实时双向通信。在实时在线点餐系统中,当用户选择菜品并下单

如何使用WebSocket和JavaScript实现在线预约系统在当今数字化的时代,越来越多的业务和服务都需要提供在线预约功能。而实现一个高效、实时的在线预约系统是至关重要的。本文将介绍如何使用WebSocket和JavaScript来实现一个在线预约系统,并提供具体的代码示例。一、什么是WebSocketWebSocket是一种在单个TCP连接上进行全双工

JavaScript和WebSocket:打造高效的实时天气预报系统引言:如今,天气预报的准确性对于日常生活以及决策制定具有重要意义。随着技术的发展,我们可以通过实时获取天气数据来提供更准确可靠的天气预报。在本文中,我们将学习如何使用JavaScript和WebSocket技术,来构建一个高效的实时天气预报系统。本文将通过具体的代码示例来展示实现的过程。We

JavaScript教程:如何获取HTTP状态码,需要具体代码示例前言:在Web开发中,经常会涉及到与服务器进行数据交互的场景。在与服务器进行通信时,我们经常需要获取返回的HTTP状态码来判断操作是否成功,根据不同的状态码来进行相应的处理。本篇文章将教你如何使用JavaScript获取HTTP状态码,并提供一些实用的代码示例。使用XMLHttpRequest

用法:在JavaScript中,insertBefore()方法用于在DOM树中插入一个新的节点。这个方法需要两个参数:要插入的新节点和参考节点(即新节点将要被插入的位置的节点)。

JavaScript是一种广泛应用于Web开发的编程语言,而WebSocket则是一种用于实时通信的网络协议。结合二者的强大功能,我们可以打造一个高效的实时图像处理系统。本文将介绍如何利用JavaScript和WebSocket来实现这个系统,并提供具体的代码示例。首先,我们需要明确实时图像处理系统的需求和目标。假设我们有一个摄像头设备,可以采集实时的图像数
