【JavaScript 进阶教程】数组新增遍历方法的说明与使用

news2024/11/17 23:52:18

文章已收录专栏:JavaScript 进阶教程

作者:卡卡西最近怎么样

文章导读:

      欢迎来到 JavaScript 进阶的学习,ES5 对 JS 的数组,字符串等内置对象的方法均有扩充。这篇文章我们要掌握的是新增的几个 Array 内置对象的常用迭代(遍历)方法,分别是 forEach(),filter(),some(),every()等,这些新方法可以让我们更方便地操作数组。

文章目录:

一:类的本质是什么

 二:forEach() 方法 

forEach() 的格式

forEach() 方法使用

 三:filter() 方法 

filter() 的格式

filter() 方法使用

执行过程

 四:some() 方法 

some() 的格式

some() 方法使用

执行过程

 五:every() 方法 

every() 的格式

every() 方法使用:

执行过程


一:类的本质是什么

       类的本质是什么?首先我们来看一下下面这个代码的输出结果:

     <script>
        class Animal{}
        console.log(typeof Animal);
     </script>

     

我们惊讶的发现,类的本质竟然是函数,或者我们可以这样理解,类就是构造函数的高端写法罢了,那它既然是个函数,是不是也拥有构造函数的一系列特性呢?例如有没有原型对象?类创建的实例化对象有没有__proto__属性呢?我们来证实一下:

     <script>
        class Animal{
            constructor(name,age){
              this.name=name;
              this.age=age;
            }
            eat(){
               console.log('我在吃食物');
            }
        }
        var dog=new Animal('旺财',5)
        console.log(Animal.prototype);
        console.log('--------------------------------------');
        console.log(dog.__proto__);
        console.log('--------------------------------------');
        console.log(Animal.prototype===dog.__proto__);
     </script>

    

这个输出结果和我们了解到的构造函数的属性完全一样,已经可以证明,ES5中构造函数有的属性,ES6的类中也有,可以说,类就是构造函数的语法糖

  

【语法糖】语法糖就是一种实现功能相同,但是更便捷的写法,我们学过的自增(i++)就是一种语法糖,它是i=i+1的语法糖


类的本质总结:

  • 类的本质是函数
  • 类内的方法都在类的原型对象prototype属性中
  • 类的实例化对象也有个__proto__属性指向类的实例化对象
  • 类就是构造函数的语法糖

 二:forEach() 方法 

forEach()可用于数组的遍历,其参数是一个回调函数


forEach() 的格式:

array.forEach( function( currentValue index arr ){ ...... } )

参数currentValueindexarr
参数含义数组当前的值,写成 value 即可数组当前值的索引数组本身

forEach() 方法使用:

     <script>
          var arr1=[1,2,3,4,5,6]
          arr1.forEach(function(value,index,arr){
            console.log('当前值为:'+ value);
            console.log('当前值的索引为'+ index);
            console.log('数组本身为'+ arr);
            console.log('------------------------------------');
          })
     </script>


这就达到了遍历数组的作用,并且可以轻松拿到当前索引

注意:参数不需要的话也不可省略(或者从后往前省略,因为顺序是固定的,第一位的就是当前值,第二位的就是当前值的索引)


 三:filter() 方法 

filter() 用于数组元素的筛选,返回符合条件的数组元素,返回的是一个新的数组,需要一个新定义的空数组去接收,其参数也是一个回调函数


filter() 的格式:

var newarray=array.filter( function( currentValue index arr ){ ...... } )

参数currentValueindexarr
参数含义数组当前的值,写成 value 即可数组当前值的索引数组本身

filter() 方法使用:

     <script>
          var arr1=[1,2,3,4,5,6]
          var newarr=arr1.filter(function(value,index,arr){
            return value%2==0;
          })
          console.log(newarr);
     </script>


执行过程如下:

  • 首先拿来数组第一个元素,不符合条件,继续下一个元素
  • 再拿来第二个元素,符合条件,放进新数组 newarr
  • 再拿来第三个,不符合条件,继续下一个元素
  • 再拿来第四个,符合条件,继续放进 newarr......以此类推

注意:需要一个新定义的数组去接收筛选过的数组,参数不需要的话也不可省略(或者从后往前省略,因为顺序是固定的,第一位的就是当前值,第二位的就是当前值的索引)


 四:some() 方法 

some() 用于判断数组中是否有满足要求的元素,返回结果是一个布尔值,存在则返回 true,不存在则返回 false,需要参数去接收返回的布尔值


some() 的格式:

var flag=array.some( function( currentValue index arr ){ ...... } )

参数currentValueindexarr
参数含义数组当前的值,写成 value 即可数组当前值的索引数组本身

some() 方法使用:

返回 true 的情况:

     <script>
          var arr1=[1,2,3,4,5,6]
          var flag=arr1.some(function(value,index,arr){
            return value==6;
          })
          console.log(flag);
     </script>

返回 false 的情况:
     <script>
          var arr1=[1,2,3,4,5,6]
          var flag=arr1.some(function(value,index,arr){
            return value==7;
          })
          console.log(flag);
     </script>

执行过程如下:

第一个返回true执行过程:

  • 首先拿来数组第一个元素判断,不符合条件,继续下一个元素
  • 下一个元素也不符合条件,再继续下一个元素
  • 下一个元素符合条件,返回 true,不在继续往下执行判断

第二个返回false执行过程:

  • 首先拿来数组第一个元素判断,不符合条件,继续下一个元素
  • 下一个元素也不符合条件,再继续下一个元素
  • 下一个元素也不符合条件,再继续下一个元素
  • ......以此类推,知道最后一个也不符合条件,返回 false

注意:需要定义一个参数去接受布尔值。并且在判断过程中一旦有一个符合条件,就不再往下判断了,直接返回 true,但是全不满足才返回 false。参数不需要的话也不可省略(或者从后往前省略,因为顺序是固定的,第一位的就是当前值,第二位的就是当前值的索引)


 五:every() 方法 

every() 用于判断数组中元素是否全部满足要求,返回结果是一个布尔值,全部满足则返回 true,有一个不满足则返回 false,需要参数去接收返回的布尔值


every() 的格式:

var flag=array.every( function( currentValue index arr ){ ...... } )

参数currentValueindexarr
参数含义数组当前的值,写成 value 即可数组当前值的索引数组本身

every() 方法使用:

返回 true 的情况:

     <script>
          var arr1=[1,2,3,4,5,6]
          var flag=arr1.every(function(value,index,arr){
            return value>0;
          })
          console.log(flag);
     </script>

返回 false 的情况:
     <script>
          var arr1=[1,2,-3,4,5,6]
          var flag=arr1.every(function(value,index,arr){
            return value>0;
          })
          console.log(flag);
     </script>

执行过程如下:

第一个返回true执行过程:

  • 首先拿来数组第一个元素判断,符合条件,继续下一个元素
  • 下一个元素也符合条件,再继续下一个元素
  • 下一个元素也符合条件,再继续......以此类推,直到最后一个元素也满足条件,则返回 true

第二个返回false执行过程:

  • 首先拿来数组第一个元素判断,符合条件,继续下一个元素
  • 下一个元素也符合条件,再继续下一个元素
  • 下一个元素不符合条件了,返回 false,不再往下继续判断

注意:需要定义一个参数去接受布尔值。并且在判断过程中一旦有一个不符合条件,就不再往下判断了,直接返回 false,但是全满足条件才返回 true。参数不需要的话也不可省略(或者从后往前省略,因为顺序是固定的,第一位的就是当前值,第二位的就是当前值的索引)

 创作不易,给个支持吧!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/409686.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Web理论篇】Web应用程序安全与风险

目录&#x1f332;1.Web应用程序的发展历程&#x1f342;1.1 Web应用程序的常见功能&#x1f342;1.2 Web应用程序的优点&#x1f332;2.Web安全&#x1f342;2.1Web应用程序常见漏洞&#x1f342;2.2未对用户输入做过滤&#x1f342;2.3 造成这些漏洞的原因是什么呢&#xff1…

【实战分享】js生成word(docx),以及将word转成pdf解决方案分享

本文将记录如何用js生成word文件&#xff0c;并在node服务器端将word转换成pdf。记录的代码均是在真实业务场景中使用成功的代码&#xff0c;没有记录中间踩坑的过程。想直接抄答案的家人们可以跳转到1.2 程序编写部分&#xff0c;最终效果图可在1.2 程序编写部分中4. 效果展示…

【解决前端报错】Bad Request: Required request parameter ‘id‘ for method parameter type Long is not present

后端查询列表接口返回的对象里包含Long id,前端获取到这个id,执行通过Long id删除操作。这时删除操作报错400&#xff0c;大意是没找着Long类型的id. swagger相关接口截图&#xff1a; Long类型的在swagger显示是integer64 &#xff0c; integer是integer32. 这是前端请求后…

微信公众号 - 实现 H5 网页在微信内置浏览器中下载文件,可预览和下载 office 文件(doc / xls / ppt / pdf 等)适用于任何前端技术栈网站,兼容安卓和苹果系统!

前言 网上的教程都是让你写页面 “引导” 右上角三个点里,让用户自己去浏览器打开,其实这样用户体验并不好。 本文实现了 最新微信公众号 H5 网页(微信内置浏览器中),预览下载 office 文件,安卓和苹果全都支持! 您可以直接复制代码,移植到自己项目中去,任何前端项目(…

全网超详细的【Axure】Axure RP 9的下载、安装、中文字体、授权

文章目录1. 文章引言2. 下载Axure93. 安装Axure94. Axure9中文5. Axure9授权1. 文章引言 最近在学习原型图&#xff0c;针对画原型图的工具&#xff0c;反复对比墨刀、Axure、xiaopiu后&#xff0c;最终选择了Axure。 接下来&#xff0c;我便从Axure RP 9的下载、安装、中文字…

VUE实现微信扫码登录

获取access_token时序图&#xff1a; public中index.html引入 <script src"https://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script> 微信登录操作 new WxLogin({// 以下操作把请求到的二维码嵌入到id为"weixin"的标签中i…

走进Vue【三】vue-router详解

目录&#x1f31f;前言&#x1f31f;路由&#x1f31f;什么是前端路由&#xff1f;&#x1f31f;前端路由优点缺点&#x1f31f;vue-router&#x1f31f;安装&#x1f31f;路由初体验1.路由组件router-linkrouter-view2.步骤1. 定义路由组件2. 定义路由3. 创建 router 实例4. 挂…

VUE3 子传父 父传子 双向传递

组件参数传递 父传子 father.vue <template > <!-- 父传子实现 2.向vue页面中的子组件传递该属性 :传给子组件的名字&#xff08;自定义&#xff09;“对应定义在父组件的属性名” --><Header :openpagevaria"openpagevaria" ></Header&g…

使用vue-cli-plugin-electron-builder创建electron+vue项目

文章目录一、nvm环境二、安装vue-cli、yarn三、使用vue项目管理器创建项目四、使用vue项目管理器安装插件五、进入my-electron-vue目录&#xff0c;启动electron六、安装VueDevtools&#xff0c;解决Vue Devtools failed to install: Error: net::ERR_CONNECTION_TIMED_OUT——…

npm install xxxx --legacy-peer-deps命令是什么?

本文分享自华为云社区《npm install xxxx --legacy-peer-deps命令是什么&#xff1f;为什么可以解决下载时候产生的依赖冲突呢&#xff1f;》&#xff0c;作者&#xff1a; gentle_zhou 。 在日常使用命令npm install / npm install XX下载依赖的操作中&#xff0c;我经常会遇…

npm 报错“A complete log of this run can be found in:”解决方法

npm 启动项目 npm run serve/dev的时候报了个错&#xff1a;再次记录一下 ! code ELIFECYCLE npm ERR! errno 1 npm ERR! new0.1.0 serve: vue-cli-service serve npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the new0.1.0 serve script. npm ERR! This is probably n…

【CSS 文字渐变、背景渐变实现方式】

CSS 文字渐变&#xff0c;背景渐变的几种实现方式 在我们日常页面开发当中&#xff0c;使用合适的css渐变效果能让我们的界面更加美观&#xff0c;赏心悦目。 一、CSS 文字渐变&#xff1a; 首先&#xff0c;文字渐变实际上是通过背景渐变裁剪成文字的前景色&#xff0c;然后…

【微信小程序】初入微信小程序

大家好我依旧是山鱼&#x1f41f;&#xff0c;对于初入小程序的同学来说本篇依旧是你的不二选择&#xff0c;它详细的介绍了小程序及小程序&开发者工具的使用&#xff0c;大家快快学起来吧&#xff01; 目录 一&#xff0c;小程序简介 1.1 什么是微信小程序 1.2小程序与…

前端实现一个名言生成器

The sand accumulates to form a pagoda✨ 写在前面✨ JS是什么&#xff1f;✨ 名言生成器✨ 页面搭建✨ 功能实现✨ 写在前面 在上周我们通过HTML、CSS实现了一个简单的‘我的相册‘页面的搭建&#xff0c;很多伙伴呢跟我说难道前端就只能做一些页面搭建的工作吗&#xff1f;…

Vue3 京东到家项目实战第一篇(首页及登录功能开发) 进阶式掌握vue3完整知识体系

目录 项目首页开发 项目准备✌️ 样式开发&#x1f44d; 防抖&#x1f44a; 底部横条✌️ 登陆注册功能开发 样式编写 &#x1f450; 路由守卫实现基础登录校验功能☝️ 使用 axios 发送登录 Mock 请求&#x1f448; 请求函数的封装&#x1f64c; 通过代码拆分增加逻…

html基本标签

目录 1&#xff0c;标题标签h1-h6 2&#xff0c;段落标签p 3&#xff0c;换行标签br 4&#xff0c;水平线标签hr 5&#xff0c;图片标签img及路径详解(绝对/相对路径) 6&#xff0c;超文本链接标签a 7&#xff0c;超本文链接之锚点 8&#xff0c;div标签 9&#xff0c…

JS-获取网页滑动距离,并实时监听

介绍 本文主要介绍通过JS获取网页滑动距离&#xff0c;并实时监听的方法。分析document.body.scrollTop、document.documentElement.scrollTop、window.pageYOffset 三者之间的区别。 一、获取网页滑动距离 JS方法&#xff1a; console.log(网页被卷去的高&#xff1a;, doc…

05-ES6语法:解构赋值

本文我们介绍ES6中解构赋值。ES6的解构赋值语法是一种JS表达式。解构赋值语法是一种JS表达式&#xff0c;通过解构赋值&#xff0c;可以将属性/值从对象/数组中取出&#xff0c;赋值给其他变量。 下面我们具体来看看解构赋值是什么&#xff1f;以及是如何使用的&#xff1f; …

Bootstrap——制作个人简历网页、工具类【边框(添加、删除、颜色、圆角)、清除浮动、颜色(文本、链接、背景)、display属性、浮动、定位、文本对齐】

制作个人简历网页 代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><meta name"viewport"content"widthdevice-width,initial-scale1,minimum-scale1,maximum-scale1,u…

移动端H5网页开发必备知识

简介 工欲善其事必先利其器&#xff0c;今天这篇文章主要讲解移动端H5开发必备的一些基础知识以及移动端适配和布局方案。如果已经看过这篇文章了或者已经掌握了移动端基础的话可以看笔者写的 移动端H5网页开发常见问题汇总 移动端开发必备知识-Hybrid App 像素 像素即一个…