• 技术文章 >web前端 >js教程

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

    长期闲置长期闲置2022-08-04 11:28:20转载89
    本篇文章给大家带来了关于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中文网其它相关文章!

    声明:本文转载于:CSDN,如有侵犯,请联系admin@php.cn删除
    专题推荐:JavaScript
    上一篇:JavaScript实现十大排序算法(图文详解) 下一篇:实例介绍javaScript操作字符串的一些常用方法
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 完全掌握javascript流程控制结构(顺序结构、分支结构和循环结构)• 一文详解JavaScript函数中的参数• 带你了解JavaScript变量类型以及变量之间的转换• 详解JavaScript函数返回值和return语句• JavaScript对象的基本用法
    1/1

    PHP中文网