JavaScript中数组常用的7种迭代处理方法总结

本篇文章给大家带来了关于javascript的相关知识,其中主要介绍了关于javascript中数组常用的7种迭代处理方法的相关问题,下面一起来看一下,希望对大家有帮助。

JavaScript中数组常用的7种迭代处理方法总结

【相关推荐:javascript视频教程、web前端】

1.map()方法

1.1应用场景:利用某种规则映射一个新的数组(遍历数组中每一个元素,并对每一个元素做对应的处理,返回一个新的数组)

例如:将数组中的每一个元素+1

立即学习“Java免费学习笔记(深入)”;

 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种迭代处理方法总结的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2699713.html

(0)
上一篇 2025年3月7日 19:01:27
下一篇 2025年2月21日 11:58:45

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 实例介绍javaScript操作字符串的一些常用方法

    本篇文章给大家带来了关于javascript的相关知识,主要介绍了javascript操作字符串的一些常用方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,下面一起来看一下,希望对大家有帮助。 【相关推荐:javascript视频教…

    2025年3月7日
    200
  • JavaScript中什么是匿名函数?应用场景浅析

    匿名函数顾名思义指的是没有名字的函数,在实际开发中使用的频率非常高,也是学好js的重点。下面本篇文章就来给大家详细介绍一下javascript中的匿名函数,希望对大家有所帮助! 匿名函数:没有实际名字的函数。 首先我们声明一个普通函数: 立…

    2025年3月7日
    200
  • JavaScript数值的方法和属性详解

    本篇文章给大家带来了关于javascript的相关知识,其中主要介绍了关于javascript中数值方法和属性的相关问题,包括了tosting、tofixed、toprecision等等内容,下面一起来看一下,希望对大家有帮助。 【相关推荐…

    2025年3月7日
    200
  • 详解JavaScript函数如何实现可变参数?(总结分享)

    js是弱类型语言,不能像c#那样使用param关键字来声明形参是一个可变参数。那么js中,如何实现这种可变参数呢?下面本篇文章就来聊聊javascript函数可变参数的实现方法,希望对大家有所帮助! JS可变参数的实现一:arguments…

    2025年3月7日 编程技术
    200
  • 简单聊聊JavaScript的Math对象方法

    本篇文章给大家带来了关于javascript的相关知识,其中主要介绍了关于math对象方法的相关问题,math对象是javascript的内置对象,提供一系列数学常数和数学方法,该对象不是构造函数,所以不能生成实例,所有的属性和方法都必须在…

    2025年3月7日
    100
  • 什么是构造函数?详解JavaScript中的构造函数

    作为原型和原型链的基础,先了解清楚构造函数以及它的执行过程才能更好地帮助我们学习原型和原型链的知识。本篇文章带大家详细了解一下javascript中的构造函数,介绍一下怎么利用构造函数创建一个js对象,希望对大家有所帮助! 1、什么是构造函…

    2025年3月7日
    200
  • JavaScript之常用事件类型整理

    本篇文章给大家带来了关于javascript的相关知识,其中主要介绍了关于javascript常用事件类型的相关问题,包括了鼠标事件、键盘事件等等内容,下面一起来看一下,希望对大家有帮助。 【相关推荐:javascript视频教程、web前…

    2025年3月7日 编程技术
    200
  • 一起分析JavaScript异常处理方式

    本篇文章给大家带来了关于javascript的相关知识,其中主要介绍了关于异常处理的相关问题,编写程序的过程难免会出现一些错误,通过这些产生的错误,我们可以学会如何避免遇到这样的情况,以及如何在下次做的更好,下面一起来看一下,希望对大家有帮…

    2025年3月7日
    200
  • 聊聊JavaScript中怎么利用Object()函数创建对象

    怎么利用object()函数创建对象?下面本篇文章给大家介绍一下object()构造函数创建对象的方法(附其他三种创建对象的方法),希望对大家有所帮助! new Object()创建对象 JavaScript 原生提供Object对象(注意…

    2025年3月7日
    200
  • BOM浏览器对象模型整理解析

    本篇文章给大家带来了关于javascript的相关知识,其中主要介绍了关于bom浏览器对象模型的相关问题,包括了windows对象的常见事件、定时器、js执行机制等等内容,下面一起来看一下,希望对大家有帮助。 【相关推荐:javascrip…

    2025年3月7日 编程技术
    200

发表回复

登录后才能评论