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

本次的干货相较于上期会多一些,可以放心观看(可以根据目录观看所需了解的内容),如有问题可以私信或评论

一、累加器reduce

reduce是ES6的数组方法,个人认为比较重要,同时学会后可以更方便的解决很多问题

首先介绍的是reduce方法中的参数

1.callback函数callback函数

其中包含四个参数

1).prev 必需(上一次调用回调返回的值,或者是初始值initalValue)

2).cur 必需 (数组中当前被处理的元素)

3).index 可选 (当前元素在数组中的索引)

4).arr 可选 (调用reduce的数组)

2.initalValue初始值(可选)

若提供初始值,cur从数组的第一项,若不提供初始值,cur则从第二项开始指向(可以简单理解为数组的第一项变为初始值)

3.实际应用和应用场景

1).不添加初始值

const a = [1, 2, 3, 4, 5]
const b = a.reduce((prev, cur, index, arr) => {
        console.log(cur, index, arr)
        return prev + cur
})
console.log(a, b)

打印结果如下:

通过打印结果大家可以更加清晰的去了解到每个参数的作用

在本次应用中reduce方法的返回值则是这个数组的累加值

2).添加初始值

const a = [1, 2, 3, 4, 5]
const b = a.reduce((prev, cur, index) => {
        console.log(cur, index)
        return prev + cur
},5)
console.log(a, b)

打印结果如下:

从两次打印结果可以看出,当我们不传初始值时,一共遍历了四次,当我们传初始值时,则遍历了五次,并且在累加中,我们时从初始值开始进行累加的

所以初始值的添加影响了遍历的次数以及最终返回的结果

想必大家看完这些也就明白了累加器的使用方法以及应用场景了,本次就不继续阐述了

二、数组的排序方法

1.reverse()

反转数组并返回一个新数组

const arr = [1,2,3]
console.log(arr.reverse()) //[3,2,1]

2.sort()

排序并返回一个新数组,如果没有参数,只会排十以内的数

1).不传参

const arr = [1, 2, 3, 4, 5, 6, 7, 11]
console.log(arr.sort())//[1, 11, 2, 3, 4, 5, 6, 7]

此时我们会发现只进行了十以内的排序,两位数只对第一位数进行排序

2).传参

传参数又大致分为两种情况,一种是从小到大排序,另一种则是从大到小排序

① 从小到大排

const arr = [1, 3, 2, 4, 5, 6, 7,11]
console.log(arr.sort((a,b) => {
    return a - b
}))//[1, 2, 3, 4, 5, 6, 7, 11]

② 从大到小排

const arr = [1, 3, 2, 4, 5, 6, 7,11]
console.log(arr.sort((a,b) => {
    return b - a
}))//[11, 1, 2, 3, 4, 5, 6, 7]

从上面的代码中,相信大家也可以看出参数a和b分别代表了什么

a是数组遍历的当前项

b是数组遍历的下一项

三、数组的操作方法

1.concat()

拼接数组并返回一个新数组(可以将两个数组拼接在一起)

let arr = [1,2,3]
let arr1 = [4,5]
console.log(arr.concat(arr1)) // [1,2,3,4,5]
console.log(arr.concar('a')) //[1,2,3,'a']

2.slice(start,end)/splice(start,length)

以上是截取数组的两个方法,单词仅有一字之差,但作用却有些不同

slice方法是从start开始截取数组,到end结束(不会截取到end)返回一个新数组,如果只有一个参数,则从start开始截取剩下的所有(stare和end为数组的索引,不会改变原数组)

splice方法也是从start开始截取数组,截取length个元素,返回一个新数组(start为索引length为截取长度,会改变原数组)

let arr = [1,2,3]
console.log(arr.slice(0,1))//[1]
console.log(arr) //[1,2,3] slice不会修改原数组
console.log(arr.splice(0,2)//[1,2]
console.log(arr) //[3] splice会修改原数组

四、数组与字符串的相互转换

1.数组转字符串

join()又分为传参和不传参两个情况

1).不传参

const arr = [1,2,3]
console.log(arr.join())//1,2,3

当我们不传参时,返回的结果为数组中每个元素,并且会以逗号隔开

2).传参

const arr = [1,2,3]
console.log(arr.join(''))//123
console.log(arr.join('0'))//102030
console.log(arr.join('?'))//1?2?3?

从以上的代码可以看出,我们传参与不传参的区别i就是,之前的逗号转换为了我们所传的参数

简单的理解就是返回整个字符串,字符串内容为数组元素+所传参数

2.字符串转数组

通过split方法可以把字符串转为数组,但同样也分两种情况

1).不传参

let str = '123'
console.log(str.split())//['123']

如果不传参,返回的值则是直接放到一个数组中,且为一个元素

2).传参

consst str = '123'
console.log(str.split(''))//['1','2','3']

如果传参,且为单引号的话,返回的值会是把字符串中的每个元素分开放到一个数组中

以上便是本次的分享的第二期,有问题的可以私信或评论啊

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值