持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第6天,点击查看活动详情
开始
对于数组的处理在开发中必不可少,且在面试中会频繁问到,今天就总结一下js处理数组的方式,同时复习一下,自己也忘了好多
push,pop,shift,unshift
push添加到数组的最后,返回值为添加后数组的长度
pop删除数组的最后一个值,返回值为删除的值
shift删除数组第一个值,返回值为删除的值
unshift在数组的最开始添加一个值,返回值为数组的长度
let arr = [1, 2, 3, 6, 5, 9, 8, 10]
let returnPush = arr.push(99)
console.log(arr, returnPush); //打印 [1, 2, 3, 6, 5, 9, 8, 10, 99] 9
let returnPop = arr.pop()
console.log(arr, returnPop); //打印 [1, 2, 3, 6, 5, 9, 8, 10] 99
let returnShift = arr.shift()
console.log(arr, returnShift); // 打印 [2, 3, 6, 5, 9, 8, 10] 1
let returnUnshift = arr.unshift(0)
console.log(arr, returnUnshift); // 打印 [0, 2, 3, 6, 5, 9, 8, 10] 8
splite
split接收多个参数
- 第一个参数为数组的下标,意思是此次操作从哪里开始
- 第二个参数定义要删除多少个元素
- 其余参数为需要添加的数
- 返回值为删除的数
let arr = [1, 2, 3, 6, 5, 9, 8, 10]
console.log(arr); // [1, 2, 3, 6, 5, 9, 8, 10]
let returnSplite = arr.splice(3, 1)
console.log(arr, returnSplite); // [1, 2, 3, 5, 9, 8, 10] [6]
此次操作的意思是在数组下标为3的位置,删除一个元素
可以看到输出删除了6,并且返回值为删除的6
我们可以把第二个参数改成0,在后面添加几个数,就是把后面的那几个数添加到第一个参数的位置,进行拼接
let arr = [1, 2, 3, 6, 5, 9, 8, 10]
console.log(arr); // [1, 2, 3, 6, 5, 9, 8, 10]
let returnSplite = arr.splice(3, 0, 9999, 66666)
console.log(arr, returnSplite); // [1, 2, 3, 9999, 66666, 6, 5, 9, 8, 10]
可以看到9999, 66666已经添加进去了
concat
合并数组
concat把两个数组合并成一个新的数组
let arr1 = [1, 2, 3]
let arr2 = [4, 5, 6]
let arr = arr1.concat(arr2)
console.log(arr); // [1, 2, 3, 4, 5, 6]
此时两个数组就合成了一个新的数组
如果要合并三个数组,需要再添加一个参数
let arr1 = [1, 2, 3]
let arr2 = [4, 5, 6]
let arr3 = [7, 8, 9]
let arr = arr1.concat(arr2, arr3)
console.log(arr); //[1, 2, 3, 4, 5, 6, 7, 8, 9]
合并数组与值
合并数组和值,只需要把concat的参数改成值就可以
let arr1 = [1, 2, 3]
let arr = arr1.concat(4, 5, 6, 7, 8, 9, 10)
console.log(arr); //[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
slice
slice接收两个参数,如果只传一个参数,那么这个参数后面的所有的数都会被默认切出
let arr1 = [1, 2, 3, 4, 5, 6]
let arr = arr1.slice(2)
console.log(arr); // [3, 4, 5, 6]
从下表2开始,到最后都被切出
如果传了两个参数slice(x,y)那么会切出x<=arr<y的所有值
let arr1 = [1, 2, 3, 4, 5, 6]
let arr = arr1.slice(2, 6)
console.log(arr); //[3, 4, 5, 6]
从下标2切到下标5
forEach
forEach遍历数组,可以得到数组的每一个值,进行操作
let arr1 = [1, 2, 3, 4, 5, 6]
arr1.forEach((item) => {
console.log(item);
})
some
some接收一个函数,只要数组内有一个值满足条件,就会返回true,全不满足才返回false
let arr1 = [1, 2, 3, 4, 5, 6]
let flag = arr1.some((item) => {
return item < 2
})
console.log(flag); // 打印true
every
every和some相反,只有全部参数都满足条件参会返回true,否则false
let arr1 = [1, 2, 3, 4, 5, 6]
let flag = arr1.every((item) => {
return item > 0
})
console.log(flag); //true
let flag2 = arr1.every((item) => {
return item > 2
})
console.log(flag); //false
Map
map不能更改原数组,会返回一个新的数组,接收一个函数
let arr1 = [1, 2, 3, 4, 5, 6]
let arr2 = arr1.map((item) => {
return item * 100
})
console.log(arr2); // [100, 200, 300, 400, 500, 600]
filter
filter过滤出满足条件的数,返回满足条件的数的集合
let arr1 = [1, 2, 3, 4, 5, 6]
let arr2 = arr1.filter((item) => {
return item > 3
})
console.log(arr2); // [4, 5, 6]
indexOf/lastIndexOf
indexOf查找数组中是否有这个数,如果有返回他的位置,没有返回-1
let arr1 = [1, 2, 3, 2, 4, 5, 6]
let index = arr1.indexOf(2)
console.log(index);// 1
但是要注意如果数组中油两个满足条件的数,只会返回从左往右的第一个,如果想从右往左,可以使用lastIndexOf,一样
结束
今天的分享到此结束,希望大家加油,一起努力