返回顶部
首页 > 资讯 > 前端开发 > JavaScript >浅谈JS数组内置遍历方法有哪些和区别
  • 745
分享到

浅谈JS数组内置遍历方法有哪些和区别

2024-04-02 19:04:59 745人浏览 薄情痞子
摘要

目录forEach()(es6)方法map()(ES6) 方法flatMap()方法for...in...for...of...filter(ES6)遍历数组every()函数(ES

forEach()(ES6)方法

forEach()(ES6)方法对数组的每个元素执行一次给定的函数。

    1. 数组里的元素个数有几个,该方法里的回调就会执行几次
    2. 第一个参数是数组里的元素,第二个参数为数组里元素的索引,第三个参数则是它自己(利用第三个参数可以进行数组去重)
    3. 数组自带的遍历方法,foreach在循环次数未知或者计算起来较复杂的情况下效率比for循环高
    4. 循环的数组元素是基本数据类型,不会改变原数据的数据,循环的数组元素为对象,会改变原数组的对象属性的值
    5. 循环过程中不支持修改索引,回调中使用return不会报错,但是无效

    注意:不能使用break和continue跳出整个循环或当前循环的,会报错,但是结合try...catch可以实现跳出循环


const array1 = ['a', 'b', 'c'];
array1.forEach(element => console.log(element));

缺点:没有办法中止或跳出 `forEach()` 循环

map()(ES6) 方法

map()(ES6) 方法创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。


    const array1 = [1, 4, 9, 16];
    const map1 = array1.map(x => x * 2);
    console.log(map1);  //[2, 8, 18, 32]

    三个参数:数组元素,元素索引,原数组本身

flatMap()方法

flatMap()方法首先使用映射函数映射每个元素,然后将结果压缩成一个新数组。它与 map 连着深度值为1的 flat 几乎相同,但 flatMap 通常在合并成一种方法的效率稍微高一些。


    var arr1 = [1, 2, [3, 4]];
    arr1.flatMap(x => x);    //[1, 2, 3, 4]
    var arr1 = [1, 2, 3, 4];
    arr1.flatMap(x => [[x * 2]]);   // [[2], [4], [6], [8]]

for...in...

这个循环用的人也很多,但是效率最低(输出的 key 是数组索引),如果遍历的是对象,输出的则是对象的属性名

for...of...

  性能要好于 `for..in...`,但仍然比不上普通的 `for` 循环
     注意:不能循环对象,因为任何数据结构只要部署 Iterator接口,就可以完成遍历操作,有些数据结构原生具备 Iterator 接口,比如Array、Map、Set、String等,而 Iterator 接口是部署在数据结构的Symbol.iterator属性上的,而对象Object恰恰是没有Symbol.iterator属性的,所以无法被for..of遍历

filter(ES6)遍历数组

filter(ES6)遍历数组,过滤出符合条件的元素并返回一个新数组, 如果没有任何数组元素通过测试,则返回空数组。


    const result = Words.filter(word => word.length > 6);
    console.log(result)   //["exuberant", "destruction", "present"]
some()函数(ES6)
    遍历数组中是否有符合条件的元素,返回值为Boolean值
    这个它只要找到一个符合条件的,就返回 true。
    var arr = [
     { id: 1, name: '买笔', done: true },
     { id: 2, name: '买笔记本', done: true },
     { id: 3, name: '练字', done: false }
    ]
    
    var bool = arr.some(function (item, index) {
     return item.done
    })
    console.log(bool)    // true

every()函数(ES6)

   测试数组的各个元素是否通过了回调函数的测试
    若都通过,返回 true,否则返回 false
    简单的说就是如果回调函数每次返回的值都是 true 的话,则 every() 返回 true,否则为 false。


    var arr = [
        { id: 1, name: '买笔', done: true },
        { id: 2, name: '买笔记本', done: true },
        { id: 3, name: '练字', done: false }
    ]
    var bool = arr.every((item, index) => {
        return item.done
    })
    console.log(bool)    // false

find()函数(ES6)

返回第一个通过测试的元素,如果没有通过测试的元素,则会返回**undefined**。


    var arr = [1, 1, 2, 2, 3, 3, 4, 5, 6]
    var num = arr.find( (item, index) => {
        return item === 3
    })
    console.log(num)   //  3

findIndex()函数 (ES6)

这个函数与上面的find()作用一样,就是它返回的值为该通过第一个元素的索引。


    var arr = [1, 1, 2, 2, 3, 3, 4, 5, 6]
    var num = arr.findIndex(item => {
        return item === 3
    })
    console.log(num)   //  4

 到此这篇关于浅谈js数组内置遍历方法有哪些和区别的文章就介绍到这了,更多相关JS数组内置遍历内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 浅谈JS数组内置遍历方法有哪些和区别

本文链接: https://lsjlt.com/news/156125.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 浅谈JS数组内置遍历方法有哪些和区别
    目录forEach()(ES6)方法map()(ES6) 方法flatMap()方法for...in...for...of...filter(ES6)遍历数组every()函数(ES...
    99+
    2024-04-02
  • JS数组中有什么内置遍历方法
    这篇文章将为大家详细讲解有关JS数组中有什么内置遍历方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。forEach()(ES6)方法forEach()(ES6)方法对数组的每个元素执行一次给定的函数。&...
    99+
    2023-06-25
  • JS中数组遍历方式有哪些
    小编给大家分享一下JS中数组遍历方式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!JS数组遍历的几种方式JS数组遍历,基本...
    99+
    2024-04-02
  • 浅谈shell 遍历数组的几种方法
    背景 某天遇到一个问题,现象如下:第一种遍历正常打印元素,然而第二种遍历只会打印一个元素! #!/bin/bash # $1 代表文件目录 # 执行 eg: # sh your_shell.sh /user/li...
    99+
    2022-06-04
    shell 遍历数组
  • es6遍历数组有哪些方法
    这篇文章主要为大家展示了“es6遍历数组有哪些方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“es6遍历数组有哪些方法”这篇文章吧。 ...
    99+
    2024-04-02
  • JS中循环遍历数组方式有哪些
    这篇文章主要讲解了“JS中循环遍历数组方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JS中循环遍历数组方式有哪些”吧!本文比较并总结遍历数组的四种...
    99+
    2024-04-02
  • JS数组遍历普通函数有哪些
    这篇文章将为大家详细讲解有关JS数组遍历普通函数有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。JS数组遍历普通函数优点:支持流程控制(break、continue、return)forconst&n...
    99+
    2023-06-17
  • es6遍历数组的方法有哪些
    ES6中遍历数组的方法有以下几种: for...of循环:通过for...of循环可以依次遍历数组中的每个元素。例如: cons...
    99+
    2023-10-26
    es6
  • JS数组遍历函数有哪些优缺点
    这篇文章主要介绍“JS数组遍历函数有哪些优缺点”,在日常操作中,相信很多人在JS数组遍历函数有哪些优缺点问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JS数组遍历函数有哪些优缺点”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-29
  • JavaScript中有哪些遍历数组的方法
    这篇文章给大家介绍JavaScript中有哪些遍历数组的方法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。javascript是一种什么语言javascript是一种动态类型、弱类型的语言,基于对象和事件驱动并具有相对...
    99+
    2023-06-14
  • php中遍历数组的方法有哪些
    本文小编为大家详细介绍“php中遍历数组的方法有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“php中遍历数组的方法有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。五种遍历方法:1、用“for($i=0...
    99+
    2023-06-30
  • javaScript数组遍历和对稀疏数组处理方法有哪些
    本篇内容介绍了“javaScript数组遍历和对稀疏数组处理方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够...
    99+
    2024-04-02
  • JS中遍历对象的方法有哪些
    本篇内容主要讲解“JS中遍历对象的方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JS中遍历对象的方法有哪些”吧! 1 简介对象是在编程中最常...
    99+
    2024-04-02
  • Jquery遍历筛选数组的方法有哪些
    这篇文章主要为大家展示了“Jquery遍历筛选数组的方法有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Jquery遍历筛选数组的方法有哪些”这篇文章吧。1...
    99+
    2024-04-02
  • PHP有哪些方法可以遍历数组元素
    这篇文章主要讲解了“PHP有哪些方法可以遍历数组元素”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP有哪些方法可以遍历数组元素”吧!本篇文章就通过实际的代码例子来给大家介绍4种常见方法:...
    99+
    2023-06-20
  • go语言中遍历数组的方法有哪些
    这篇文章主要介绍了go语言中遍历数组的方法有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇go语言中遍历数组的方法有哪些文章都会有所收获,下面我们一起来看看吧。遍历数组有两种方法:1、用for循环语句遍历数...
    99+
    2023-07-05
  • JavaScript中遍历数组和对象有哪些常用的方法
    这篇文章主要介绍“JavaScript中遍历数组和对象有哪些常用的方法”,在日常操作中,相信很多人在JavaScript中遍历数组和对象有哪些常用的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操...
    99+
    2024-04-02
  • php foreach遍历数组的方式有哪些
    在PHP中,可以使用以下几种方式来遍历数组:1. 使用foreach循环:foreach循环是遍历数组最常用的方式,它可以遍历关联数...
    99+
    2023-10-10
    php
  • python内置函数和内置方法有什么区别
    python中内置函数与内置方法的区别有以下几种作用域不同内置函数的作用域:从函数调用开始至函数执行完成,返回给调用者后,在执行过程中开辟的空间会自动释放,也就是说函数执行完成后,函数体内部通过赋值等方式修改变量的值不会保留,会随着返回给调...
    99+
    2024-04-02
  • js中深拷贝和浅拷贝的区别有哪些
    这篇文章主要介绍js中深拷贝和浅拷贝的区别有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!javascript是一种什么语言javascript是一种动态类型、弱类型的语言,基于对象和事件驱动并具有相对安全性并广...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作