JS的一些方便遍历数组的API函数

这些函数有的时候在学到后面的内容会遇到,看一些前端的视频的时候突然出现这些函数看到有点懵,现在就整合一下,然后以后看到这些函数就知道是干什么的了

1、箭头函数

没学完js的必须得先了解箭头函数

//它两一样
function fn(){console.log('damn')
}() => { console.log('damn') }//它三一样,一个参数可以省略(),多个参数不可以,没有参数也不可以
function fn(a){console.log(a)
}(a) => { console.log(a) }a => { console.log(a) }//只有一个return的时候可以省略{},甚至可以省略return
function fn(x){return x+1
}(x) => return x+1x => x+1//返回一个对象的时候,如果省略return的形式要用一个()包住return的值
//不然会把对象的{}误认为是函数体
function fn(){return { name: xxx , age: 18 }
}() => return { name: xxx , age: 18 }() => ({ name: xxx , age: 18 })//箭头函数里有多个语句的时候就不可以一行显示,也不可以随便省略{}、return
function fn(a,b,c){c = a + breturn c + 1
}(a,b,c) => {c = a + breturn c + 1
}

2、for-each

这是最简单的了,就是普通遍历数组

普通for循环:

let arr = [1,2,3,4]
for( let i=0; i<arr.length; i++ ) { ...每遍历到一个要干什么 
}

for...in... 和 for...of...循环:

let arr = [1,2,3,4]
for(let i in arr ){console.log(i)  //i是字符串类型的数字索引  所以打印arr[i+1]会得一个undefined
}
for(let i of arr){console.log(i)  //i是值
}for(let i =0;i<arr.length;i++){console.log(i)  //i是数字索引
}let obj ={name:'boy'
}
for(let i in obj){console.log(i)  //i是字符串键名
}

那么for-each循环

let arr = ['a', 'b', 'c', 'd']
//forEach是函数,直接【数组名.forEach()】,然后里面写一个函数
arr.forEach(function (val, idx, arr) { //最多可以设置三个参数console.log(val + ', index = ' + idx) // val是当前元素,index当前元素索引,arr数组console.log(arr)
})
//输出:
a, index = 0
(4) ["a", "b", "c", "d"]
b, index = 1
(4) ["a", "b", "c", "d"]
c, index = 2
(4) ["a", "b", "c", "d"]
d, index = 3
(4) ["a", "b", "c", "d"]//或者一个参数的时候,这个参数就代表数组里遍历到的每一个成员
arr.forEach(item => { //此时item代表arr数组每一个成员console.log(item)
})
//输出:['a','b','c','d']

3、map方法生成一个原数组修改过后的新数组

比如我要获得一个原数组每个成员*2的结果

用forEach方法,就要设一个新数组,然后遍历原数组,并把每次修改的结果装到新数组里

用map方法,直接用一个新数组接收一下,然后对原数组直接操作即可

具体对象数组例子:

(操作,在原数组的基础上,让price价格后面加上“元”,并多加一个属性“number:888”,)

(当然这里可以用“...item”代表数组里所有属性)

简写:

4、filter方法

遍历到数组每个成员,根据return的是true还是false,来决定返不返回当前遍历到的这个成员

return 的是true,当前这个成员就装进新数组

否则就丢掉不要

5、reduce方法得到一个数组最后的计算结果

老方法计算一个数组的总数:

现在用reduce计算:

reduce( )完整有2个参数,一个是一个return结果的函数,第二个是第一次计算的初始值

第一个函数参数里,完整要传4个参数:reduce( prev, current, index, arr )

分别代表( 上一次运算的结果, 当前遍历到的成员, 下标, 数组名字 ),其中后面两个参数可有可无

第二个参数一定不要漏了,一般初始值都是0,乘除的初始值一般是1

求最大值

求平均值

6、every方法:类似&&判断

里面传一个函数参数,进行一个判断并返回,如果数组每一个成员都符合这个判断条件,结果就是true;否则只要有一个成员不符合条件,就返回false

结果true

结果false

结果false

结果true

7、some方法:类似 || 判断

跟every( )相反,有一个符合要求就true,全都不符合才是false

结果true

结果false

8、include方法

字面意思,往里面传一个参数(而不是回调函数了),数组里有这个参数就true,没有就false

注意,只能对普通类型有效,对象这些没用

结果true

结果false

对数组、对象的结果无法判断

结果false

那怎么去比较一个数组里包不包含某个子数组?

用every( )配合include( )就行了,every可以遍历到子数组每一个成员,然后include可以查看子数组遍历到的成员在原数组里有没有,如果有一个没有就返回给every一个false,然后every最终判断为false

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode刷题记录:(11)组合(初识回溯算法)

leetcode传送通道 暂时记录&#xff0c;这篇没啥营养&#xff0c;不用看了 class Solution {List<List<Integer>> result new ArrayList<>(); // 存所有组合List<Integer> path new LinkedList<>(); //存每一个组合public List<List<Int…

springboot 动漫周边商城的设计与实现

摘 要 二十一世纪我们的社会进入了信息时代&#xff0c;信息管理系统的建立&#xff0c;大大提高了人们信息化水平。传统的管理方式对时间、地点的限制太多&#xff0c;而在线管理系统刚好能满足这些需求&#xff0c;在线管理系统突破了传统管理方式的局限性。于是本文针对这一…

社区维修平台|基于SpringBoot+ Mysql+Java+JSP技术的社区维修平台设计与实现(可运行源码+数据库+设计文档+部署说明+视频演示)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 住户后台功能 维修员前台功能 维修员后台功能 管理员功能登录 系统功能设计 数据库E…

代码随想录刷题day27|组合总和II组合总和II分割回文串

文章目录 day27学习内容一、组合总和-所选数字可重复1.1、代码-正确写法1.1.1、为什么递归取的是i而不是i1呢&#xff1f; 二、组合总和II-所选数字不可重复2.1、和39题有什么不同2.2、思路2.2.1、初始化2.2.2、主要步骤2.2.3、回溯函数 backTracking 2.3、正确写法12.3.1、为什…

什么是CPU?CPU的性能指标是什么?

我们在就看一台笔记本电脑配置时&#xff0c;必然要关注CPU的型号与性能&#xff0c;那么你知道什么是CPU吗&#xff1f;CPU的性能指标又是什么呢&#xff1f;如何来衡量这款CPU的性能是不是很强大&#xff1f;我们来一起看一下&#xff01; 什么是CPU CPU&#xff0c;全称中央…

计算机考研|北航北理北邮怎么选?

北航985&#xff0c;北理985&#xff0c;北邮211 虽然北邮事211&#xff0c;但是北邮的计算机实力一点也不弱&#xff0c;学科评级&#xff0c;计算机是A 北航计算机评级也是A&#xff0c;北理的计算机评级是A- 所以&#xff0c;这三所学校在实力上来说&#xff0c;真的大差…

【DFS深度优先搜索专题】【蓝桥杯备考训练】:迷宫、奶牛选美、树的重心、大臣的旅费、扫雷【已更新完成】

目录 1、迷宫&#xff08;《信息学奥赛一本通》&#xff09; 2、奶牛选美&#xff08;USACO 2011 November Contest Bronze Division&#xff09; 3、树的重心&#xff08;模板&#xff09; 4、大臣的旅费&#xff08;第四届蓝桥杯省赛Java & C A组&#xff09; 5、扫…

202212 CSP认证 | JPEG 解码

JPEG 解码 一道特别幸福简单的第三题…都不敢想象在考场上碰见这种题目会有多幸福。直接按照题目意思做就好了&#xff0c;感觉比第二题还简单…而且数组特别小完全没有超时压力 补充一个对小数处理的部分&#xff0c;包括本题涉及的四舍五入取整以及输出取整&#xff1a;C 实…

大模型知识积累——幻觉

什么是大模型幻觉 在大语言模型的文本生成场景下&#xff0c;幻觉是指一本正经的胡说八道。逻辑连贯的自然表述中&#xff0c;有理论或者事实错误&#xff0c;捏造事实等问题。 幻觉问题的危害 LLM幻觉可能产生传播错误知识的后果。对于医疗应用中结果安全和可信AI尤为重要&a…

【字符串匹配】BF与KMP算法

一、字符串匹配问题 字符串匹配问题是指在一个主文本字符串中查找一个指定的模式字符串&#xff0c;并确定模式字符串在主文本中出现的位置。这个问题在计算机科学中非常常见&#xff0c;尤其是在文本处理、数据搜索和生物信息学等领域。 字符串匹配问题通常涉及到以下几个方…

Qt学习--继承(并以分文件实现)

基类 & 派生类 一个类可以派生自多个类&#xff0c;这意味着&#xff0c;它可以从多个基类继承数据和函数。定义一个派生类&#xff0c;我们使用一个类派生列表来指定基类。类派生列表以一个或多个基类命名。 总结&#xff1a;简单来说&#xff0c;父类有的&#xff0c;子…