JavaScript中的常用迭代处理方法包括什么,怎么应用
Admin 2022-08-22 群英技术资讯 788 次浏览
这篇文章将为大家详细讲解有关“JavaScript中的常用迭代处理方法包括什么,怎么应用”的知识,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
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.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的元素是502.2注意点:
(1).回调函数的执行次数等于数组长度
(2).forEach函数没有返回值
(3).回调函数不需要return,就算手动return,也不会结束循环
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.1应用场景:用于判断数组中是否存在满足条件的元素
例如:判断数组中是否存在大于100的数(存在,返回值为true,不存在,返回值为false)
let arr = [10, 50, 150, 200, 60, 30]
let bol = arr.some((item, index) => {
return item > 100
})
console.log(bol)//true4.2注意点:
(1).回调函数的执行次数不等于数组长度
(2).some函数的返回值是一个布尔值
(3).回调函数返回布尔类型值用于结束遍历,如果return的值为true,则遍历结束,且some函数的返回值为false,如果return的值为false,则继续遍历,且some函数的返回值为false
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)//false5.2注意点:
(1).回调函数的执行次数不等于数组长度
(2).every函数的返回值是一个布尔值
(3).回调函数返回布尔类型值用于结束遍历,如果return的值为true,则遍历继续,且every函数的返回值为true,如果return的值为false,则继续结束,且every函数的返回值为false
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)//36.2注意点:
(1).如果return的值为true,则遍历结束,findIndex方法返回值为当前的index值;如果return的值为false,则遍历继续,如果数组全部遍历完还是没有返回true,则findIndex方法返回值为-1
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)//1007.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值是上一轮的返回值

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]))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]))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]))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]))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]))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]))
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
jquery求浏览器宽度的方法:1、利用“$()”方法获取浏览器窗口对象;2、利用width()方法来求指定浏览器对象的宽度,该方法用于返回或者设置匹配元素的宽度,语法为“$(window).width()”。
今天给大家分享的是React Hooks使用要注意问题的内容,本文有实例和详细注释供大家参考,对大家理解Hooks的使用有一定的帮助,接下来跟随小编一起看看吧。
reduce方法从数组的第一项开始,逐一遍历到最后。reduceRight从数组的最后一项开始,向前遍历第一项。接收两个参数:一个在每个项目中调用的函数和作为合并基础的初始值。
用JavaScript怎样做点击显示隐藏的效果?点击显示或者点击隐藏效果的应用场景有很多,例如导航菜单,图片展示等等,因此本文就给大家分享一下如何实现简单的点击显示隐藏,实现效果及代码如下:
本文实例讲述了JavaScript中继承原理与用法。分享给大家供大家参考,具体如下:
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008