数组常用的一些方法 1 (较实用)

本文总结了JavaScript中常用的数组方法,如判断数组类型(instanceof,Array.isArray),数组检索(includes,indexOf,lastIndexOf,find,findIndex),以及迭代方法(forEach,some,every,filter,map,entries/keys/values)。适合开发者在实际项目中参考和学习。
摘要由CSDN通过智能技术生成

俗话说的好“温故而知新”,于是作者前段事件对许多东西都进行了复习,近段时间也许过多出一些总结篇的文章(可以根据目录来选择需求哦)

那么今天要总结的就是个人认为比较常用的数组方法,大家觉得有补充的可以评论或私信,下面开始讲解正文

一、判断类型(判断是否为数组)

当我们遇到一些面试题时,有时你知道它是一个数组,但计算机却并不能一眼识别出这是数组,那么我们就需要借助一些识别是否为数组的方法了

1.较常用版本

1).instanceof

准确来说instanceof是一个运算符,它不仅可以用来判断是否为数组类型,同样也可以判断是否为其他类型,返回结果为布尔类型

const arr = [1,2,3]
console.log(arr instanceof Array) //true

2).Array.isArray()

括号里面为需要判断的值,返回的结果也是布尔类型

const arr = [1,2,3]
console.log(Array.isArray(arr))//true

2.不常用版本(不正常版本)

1).valueOf()

这个方法可以说很鸡肋,所以就把它列为不正常版了,数组通过valueOf方法返回的值则是数组本身,严格来讲并没有起到判断的作用,但以下代码可供大家去思考

const arr = [1,2]
const obj = { a:1 }
console.log(obj.valueOf())//{ a:1 }
console.log(arr.valueOf())//[1,2]

2).toString()

其实大家看到这里也可以发现,这两个方法就是对象的内置方法,再之前的整活篇中我们用其解决过一个很有意思的问题,大家感兴趣的可以去看看,本次返回的结果大家可以思考其愿意

const arr = [1,2]
const obj = { a:1 }
console.log(obj.toString())//[object Object]
console.log(arr.toString())//[1,2]
console.log(Object.property.toString.call(arr))//[object Array]

二、数组检索方法

1.includes()

用于确定数组中是否含有某个元素,返回的为布尔类型

const arr = [1,2]
arr.includes(1)//true
arr.includes(2)//false

2.indexOf()/lastIndexOf()

同样时确定数组中是否含有某个元素,但返回结果却不相同:

① indexOf()的返回结果

当寻找到此元素时,则返回(从前往后)找到的第一个此元素的索引;若没找到,则返回-1

② lastIndexOf()的返回结果

返回(从后往前)找到的第一个此元素的索引-1(索引依旧是从前往后数哦,不要混淆)

const arr = [1,2,1]
arr.indexOf(1)//0
arr.indexOf(3)//-1
arr.lastIndexOf(1)//2
arr.lastIndexOf(3)//-1

3.find()/findIndex()

find()和findIndex()单词上大家也许就可以看出大致的区别了

find方法找到数组中符合条件的第一个元素,都不符合条件则返回undefined

findIndex方法是找到数组中符合条件的第一个元素的索引,都不符合则返回-1

相同的则是返回的都是第一个,不同的则是一个是元素,一个是索引,通过以下代码可以帮助大家方便区分两者

const arr = [1,2,3,4]
arr.find(function(item, index) {
    return item > 2
}) //返回大于2的第一个元素,只会返回3
arr.findIndex(function(item, index) {
    return item > 2
}) //返回大于2的第一个元素的索引,返回的是2

三、数组的迭代方法(重要且常用)*

在我们的日常中数组的遍历可以说是非常非常的常用了,以下便是我总结的几种方法,再次就不分是否常用了,大家可以根据环境去选择使用那种方法

1.forEach()

const arr = [1,2,3]
arr.forEach((item,index) => {
    console.log(item)
})//会打印每个元素

2.some()/every()

此方法主要用于判断是否满足条件,但返回的是布尔值,两者只是判断条件略有不同

some方法:当数组中有一个或多个满足条件,则会返回true,否则返回false

every方法:当数组中所有所有元素都满足条件才会返回true,否则返回false

every方法相对some方法会更严格一些,大家可以根据环境去选择使用

const arr = [1,2,3]
arr.some(item => {
    return item > 1
})//true
arr.every(item => {
    return item > 1
})//false 因为1不大于1

3.filter()

同样也是判断,但此方法返回的是一个数组,并不会修改原数组

const arr = [1,2,3]
arr.filter(item => {
    return item > 1
})//[2,3]

4.map()

此方法主要用于遍历,返回的同样是一个数组,并不会修改原数组(可用于数学运算)

与filter方法不同的是,map是对原数组中的属性进行调用一次,返回的值由每次调用的返回值组成

const arr = [1,2,3]
arr.map(item => {
    return item + 1
})//[2,3,4]

5.entries()/keys()/values()

主要讲解entries方法,后者与前者方式基本相同

entries方法是对数组的键值对进行遍历,返回一个遍历器,可以用for...of对其进行遍历

const arr = [1,2,3]
for(let [index,value] of arr.entires()) {
    console.log(index,value)
}
//0, 1
//1, 2
//2, 3

那么通过上面的代码和解释,大家也许就明白后者的用法了,我们直接上代码

const arr = [1,2,3]
for(let index of arr.keys()) {
    console.log(index)
}//打印的为数组每个元素的索引
for(let value of arr.values()) {
    console.log(value)
}//打印的为数组的每个元素

以上便是本期对数组方法的一部分总结,如有问题可以私信或评论啊

  • 33
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值