最全的JavaScript常见的操作数组的函数方法宝典

第二个参数表示的是数组片段的结束位置,所以取到的片段是从第一个参数表示的位置取到第二个参数表示的位置的前一个元素。

若省略第二个参数,则表示从第一个参数表示的位置一直取到最后一个元素

负数表示元素位置时,是从末尾往前数,分别为-1 、-2 、-3……

6、splice()


splice()方法在数组指定位置插入或删除元素,并返回删除元素组成的数组(会改变原数组)

参数(共3个):

  1. 第一个参数:删除或插入元素的起始位置

  2. 第二个参数:从起始位置开始往后需要删除的元素个数。若该元素省略,则表示从起始位置开始到最后的所有元素都删除

  3. 第三个参数及之后的所有参数:将该值作为数组的元素依次插入到第一个参数表示的位置上

我们直接来看几个简单的例子

var arr = [1,2,3,4,5,6,7]

arr.splice(4)             //返回 [5,6,7],此时arr为[1,2,3,4]

arr.splice(1, 2)          //返回 [2,3],此时arr为[1,4]

arr.splice(1, 0, ‘new1’, ‘new2’) //返回[],此时arr为[1,‘new1’,‘new2’,4]

所以这是一个很方便并且功能很全的数组操作函数,它既可以删除元素,又可以插入元素

7、push()


push()方法是在数组的尾部添加一个或多个元素,并返回数组的长度(会改变原数组)

该函数的有1个或多个参数,函数依次获取每个参数将其插入到数组的末尾

直接来看例子

var arr = []

arr.push(1)       //返回 1, 此时arr为 [1]

arr.push(5)       //返回 2, 此时arr为 [1,5]

arr.push(3,2)     //返回 4, 此时arr为 [1,5,3,2]

8、pop()


pop()方法是删除数组的最后一个元素,并返回该元素(会改变原数组)

该函数不需要传入任何参数

来简单看下例子

var arr = [6,8,7]

arr.pop()          //返回 7, 此时arr为 [6,8]

arr.pop()          //返回 8, 此时arr为 [6]

9、unshift()


unshift()方法是在数组的头部添加一个或多个元素,并返回数组的长度(会改变原数组)

该函数的有1个或多个参数,函数依次获取每个参数将其插入到数组的最前面

来看几个例子

var arr = []

arr.unshift(1)       //返回 1, 此时arr为 [1]

arr.unshift(5)       //返回 2, 此时arr为 [5,1]

arr.unshift(3,2)     //返回 4, 此时arr为 [2,3,5,1]

10、shift()


shift()方法是删除数组第一个元素,并返回该元素(会改变原数组)

该函数不需要传入任何参数

来简单看下例子

var arr = [6,8,7]

arr.shift()          //返回 6, 此时arr为 [8,7]

arr.shift()          //返回 8, 此时arr为 [7]

arr.shift()          //返回 7, 此时arr为 []

11、toString()


toString()方法是返回将数组每个元素转化为字符串并用逗号分隔连接起来的字符串(不会改变原数组)

若遇到数组里嵌套数组的话,同样也会将该嵌套数组里的每个元素转化为字符串并连接起来

来看几个例子

[1,2,3].toString()              //返回 ‘1,2,3’

[‘cherry’,‘apple’,‘bannana’].toString()    //返回 ‘cherry,apple,banana’

[1,2,[6,7]].toString()          //返回 ‘1,2,6,7’

[1,[3,6,[8,9]]].toString()      //返回 ‘1,3,6,8,9’

12、forEach()


forEach()方法是ES5新增的,它是用来为每个元素调用指定的函数(可以修改原数组)

该方法只有一个参数,该参数为回调函数,该回调函数有三个参数,这三个参数的含义分别为数组元素元素的索引数组本身

来看一个例子,现在要求将某一数组内的每个元素都+2

var a = [1,2,3,4,5]

a.forEach(function (value, index, arr) {

arr[index] = value + 2

})

console.log(a)          // [3,4,5,6,7]

再来看一个例子,计算数组内各元素之和

var a = [1,2,3,4,5]

var sum = 0

a.forEach(function(value) {

sum += value

})

console.log(sum)       // 15

13、map()


map()方法是是ES5新增的,它是将调用的数组的每个元素传递给指定的函数,把每次调用回调函数的返回值存入到一个新的数组中,最后返回这个新的数组(不会改变原数组)

该方法只有一个参数,该参数为回调函数,该回调函数只有一个参数,该参数的含义是数组的每个元素

来看一个例子,返回一个新的数组,该数组内的每个元素为原数组每个元素的平方

var arr = [1,2,3,4,5]

var new_arr = arr.map(function (value) {

return value * value

})

console.log(new_arr)      //  [1, 4, 9, 16, 25]

14、filter()


filter()方法是ES5新增的,相当于一个过滤器,它是通过回调函数里的逻辑判断来过滤掉不需要的元素,再将剩下的元素都放到一个新的数组中并返回(不会改变原数组)

该方法只有一个参数,该参数为回调函数,该回调函数有两个参数,他们的含义分别为数组中的元素元素的索引

当回调函数的返回值为true时,即return true时,该元素将被加入到新的数组中;反之,该元素将被不被加入到新的数组中

接下来我们来看一个例子。需求是:挑选出数组中小于6的所有元素,并保存在数组中返回

var arr = [6, 12, 7, 1, 9, 3, 0, 19]

var new_arr = arr.filter(function (value) {

return value < 6

})

console.log(new_arr)        // [1, 3, 0]

再来看一个例子。需求是:将一个数组中偶数位置的元素取出来保存在一个新数组中并返回

var arr = [6,12,7,1,9,3,0,19]

var new_arr = arr.filter(function (value, index) {

return index % 2 === 0

})

console.log(new_arr)       // [6, 7, 9, 0]

15、every()


every()方法是针对一个数组的逻辑判定(不会改变原数组)

该方法有一个参数,该参数为回调函数,该回调函数有一个参数,该参数含义是数组中的每个元素

每个元素调用回调函数的返回值全部都true时,最后返回true;相反,只要有一个元素调用回调函数,返回的值不为true,最后都会返回false

我们来看一个例子。需求:判断该数组中每个元素是否都小于10

var arr = [1,2,3,4,5,6,7,8]

var result = arr.every(function (value) {

return value < 10

})

console.log(result)          // true, 表示该数组所有元素都小于10

我们把arr中的元素改变几个,再来看看代码运行结果

var arr = [1, 2, 3, 4, 5, 6, 12, 8]

var result = arr.every(function (value) {

return value < 10

})

console.log(result)       // false, 表示该数组中有某个元素不小于10

16、some()


some()方法跟every()方法类似,只是逻辑判断略有不同,前者是当每个元素调用回调函数后的返回值中,只要有一个为true,则最终返回true;反之,只有当每个元素调用回调函数后的返回值全部都false时,最后才返回false

我们直接来看例子。需求是:判断该数组中是否有元素12

var arr = [3, 8, 9, 45, 12]

var result = arr.some(function (value) {

return value === 12

})

console.log(result)      // true, 表示该数组中有元素12

那当把arr数组中的元素12删除以后,我们再来看看返回结果

var arr = [3, 8, 9, 45]

var result = arr.some(function (value) {

return value === 12

})

console.log(result)      // false, 表示该数组中并没有元素12

17、reduce()


reduce()方法是通过调用指定的回调函数将数组元素进行组合,并返回组合后的值(不会改变原数组)

参数(共2个):

  1. 第一个参数:为回调函数,用于处理数组元素。该回调函数有两个参数xy,这两个参数都为调用数组的元素成员

  2. 第二个参数:为可选参数,作为传递给回调函数的初始值。若省略该参数,则将数组的第一个数作为初初始值

当省略了第二个参数时,该方法第一次调用回调函数时,将数组的第一个元素作为回调函数的第一个参数x的值,将数组的第二个元素作为回调函数的第二个参数y的值。然后运行回调函数里的代码,将return后的值作为下一次调用回调函数的第一个参数x的值,然后将数组的第三个元素作为参数y的值……以此类推,直到数组内所有元素都被调用以后,将最后一次调用回调函数的return值作为最终的返回值。

如果给第二个参数赋值了的话,则在第一次调用回调函数时,是将第二个参数的值作为该回调函数的第一个参数x的值,将数组的第一个参数作为该回调函数的第二个参数y的值……接下来的操作都跟上述一样,这里不再重述

我们来看一个例子。需求是:将数组中的每一个元素相乘并返回最终的值

var arr = [1,2,3,4,5,6]

var result = arr.reduce(function (x, y) {

return x * y

})

console.log(result)          // 720

再来看一个例子。需求是:某数组中存储着一个班级里5个学生的年龄,现在要计算这5个学生的年龄和,并加上老师的年龄,老师的年龄为29

var arr = [10, 11, 13, 14, 12]

var result = arr.reduce(function (x, y) {

return x + y

}, 29)         //这里将老师的年龄29作为reduce()方法的第二个参数

console.log(result)             // 89

18、reduceRight()


reduceRight()方法与reduce()方法类似,唯一不同的就是,后者在调用数组元素的时候是从左往右调用的;前者是从右往左调用的。这里就不做过多的讲解了。

19、indexOf()


indexOf()方法是获取某元素在数组中的索引,并且只返回第一个匹配到的元素的索引;若该元素不在数组中,则返回 -1(不会改变原数组)

参数(共2个):

  1. 第一个参数:必填,为需要查询的元素

  2. 第二个参数:为可选参数,表示从数组的哪个位置开始搜索

我们来看一个例子。需求是:一个班级的学生按成绩从高到低排列好存储在数组中,现在查询张三在班级里排名第几

var arr = [‘小红’, ‘小明’, ‘张三’, ‘李四’, ‘王五’]

var index = arr.indexOf(‘张三’) + 1

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

最后

如果你已经下定决心要转行做编程行业,在最开始的时候就要对自己的学习有一个基本的规划,还要对这个行业的技术需求有一个基本的了解。有一个已就业为目的的学习目标,然后为之努力,坚持到底。如果你有幸看到这篇文章,希望对你有所帮助,祝你转行成功。

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

]
[外链图片转存中…(img-0kzxon8C-1712582486286)]
[外链图片转存中…(img-4BAvlqES-1712582486286)]
[外链图片转存中…(img-PDFYAHSO-1712582486287)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-xDfME0kF-1712582486287)]

最后

如果你已经下定决心要转行做编程行业,在最开始的时候就要对自己的学习有一个基本的规划,还要对这个行业的技术需求有一个基本的了解。有一个已就业为目的的学习目标,然后为之努力,坚持到底。如果你有幸看到这篇文章,希望对你有所帮助,祝你转行成功。

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-4PNob6fw-1712582486287)]

  • 18
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值