最全的JavaScript常见的操作数组的函数方法宝典,不收藏绝对后悔

var arr = [54, 78, 12, 64]

arr.reverse()

console.log(arr) //返回 [64, 12, 78, 54]

该方法无非就是将数组转成了逆序数组

4、concat()


concat()方法将调用每一个参数创建并返回一个数组(不会改变原数组)

该方法可以省略参数或者传入多个参数。

当省略参数时,则表示创建一个新的空数组,将原始数组的数据传入这个空数组中,有点类似copy的感觉 当传入1个或多个参数时,则表示创建一个新的空数组,将原始数组的数据和每个参数都添加到这个空数组中。

接下来我们来看看具体的例子,首先是不传入任何参数

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

var new_arr = arr.concat()

console.log(new_arr) //返回 [1,2,3,4]

再来看传入参数的例子

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

var new_arr = arr.concat(5,6,7,8)

console.log(new_arr) //返回 [1,2,3,4,5,6,7,8]

跟定义说的一样,传入的参数也被当成新创建的数组中的成员添加了进去

其实我们还可以传入数组作为该方法的参数,最后会将数组中每一个元素添加到新的数组中去

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

var new_arr = arr.concat([5,6,7,8])

console.log(new_arr) //返回 [1,2,3,4,5,6,7,8]

但是,如果数组中还嵌套了数组,那么嵌套的那个数组会被当成一个整体添加到新的数组中去。简而言之,也就是说该方法只能拆分一层的数组参数

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

var new_arr = arr.concat([5,6,7,8,[9,10]])

console.log(new_arr) //返回 [1,2,3,4,5,6,7,8,[9,10]]

可以很清楚地看到,嵌套的数组[9,10]并没有被拆开添加到新数组中,而是作为整体添加到了新数组中

5、slice()


slice()方法是返回指定的一个数组片段

该方法有两个参数,分别代表了数组片段的起始位置和结束位置,第一个参数不能省略,第二个参数可以省略

接下来看该方法的使用例子

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

arr.slice(1,3) //返回 [2,3]

arr.slice(3) //返回 [4,5,6,7]

arr.slice(4,-1) //返回 [5,6]

arr.slice(-3) //返回 [5,6,7]

arr.slice(-3,-2) //返回 [5]

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

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

负数表示元素位置时,是从末尾往前数,分别为-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

console.log(index) // 3, 表示张三成绩排名第三

我们来改变一下上个例子的需求,现在的需求是:班里有两个张三,已知成绩好的那个张三在班里排名第一,现在要获取另一个成绩差点的张三在班级里的排名

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

//给indexOf()方法的第二个参数赋值1,表示从数组的第二个元素开始找

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

console.log(index) // 4, 表示成绩差点的张三排名第四

再来看一个例子。需求是:判断这个班级里是否有小王这个人,若调用indexOf()方法返回-1,则表示小王不在这个班级中;否则表示小王在这个班级中

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

var index = arr.indexOf(‘小王’)

if(index === -1) {

console.log(‘false’)

}

else {

console.log(‘true’)

}

// false

20、lastIndexOf()


lastIndexOf()方法与indexOf()类似,唯一的区别就是,前者是否数组的末尾开始搜索,后者是从数组的开头开始搜索。所以这里就对该方法做过多的讲解了。

最后

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

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

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

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

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

if(index === -1) {

console.log(‘false’)

}

else {

console.log(‘true’)

}

// false

20、lastIndexOf()


lastIndexOf()方法与indexOf()类似,唯一的区别就是,前者是否数组的末尾开始搜索,后者是从数组的开头开始搜索。所以这里就对该方法做过多的讲解了。

最后

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

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

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

[外链图片转存中…(img-QOep1R8y-1715257338677)]

[外链图片转存中…(img-DlUEOAoY-1715257338677)]

[外链图片转存中…(img-8xnYhyju-1715257338678)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

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

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值