前言
日常开发处理数组是必不可少的,现在处理数组的方法有很多,选择适合的就会事半功倍,以下是我用过的,记录下来,方便下次使用,有不对的欢迎指正
join
该方法可以将数组里的元素,通过指定的分隔符,以字符串的形式连接起来,返回一个新的字符串
const arr=[1,2,3,4,5,6];
const newStr=arr.join('指定分隔符');
console.log(newStr)
split
用指定的分隔符,将字符串分割成数组,返回一个新的数组
const str="1_2_3_4"
const newArr=str.split('_')
console.log(newArr)
concat(改变原数组)
const arr1=[1,2,3]
const arr2=[4,5,6]
const newArr=arr1.concat(arr2)
console.log(newArr)
reverse(改变原数组)
翻转数组
const arr=[1,2,3,4,5,6];
conole.log(arr.reverse())
sort(改变原数组)
对数组排序
const arr1=[2,6,3,8,9,4];
const arr2 = ['b','d','a','f'];
console.log(arr1.sort(),arr2.sort())
for
最常用的方法,不多说
const arr=[1,2,3,4,5,6];
for(let i=0;i<arr.length;i++){
conole.log(arr[i])
}
push(改变原数组)
在数组的最后面,添加一个或者多个元素
const arr=[1,2,3,4,5,6];
arr.push(7)
arr.push(7,8,9,)
console.log(arr)
pop(改变原数组)
该方法可以在数组的最后面,删除一个元素
const arr=[1,2,3,4,5,6];
arr.pop()
console.log(arr)
unshift(改变原数组)
该方法可以在数组的最前面,添加一个或者几个元素
const arr=[1,2,3,4,5,6];
arr.unshift(0)
arr.unshift(0,7,8,9)
shift(改变原数组)
该方法可以在数组的最前面,删除一个元素
const arr=[1,2,3,4,5,6];
arr.shift()
console.log(arr)
forEach(改变原数组)
等同于for循环,没有返回值
const arr=[1,2,3,4,5,6];
arr.forEach(function(item,index){
//item 当前项 index 当前下标
console.log(item,index)
}
)
map
映射,使用和forEach差不多,但是该方法有返回值,返回一个新数组,新数组的长度和原数组长度相等
const arr=[1,2,3,4,5,6];
const newArr=arr.map(function(item,index){
//item 当前项 index 当前下标
console.log(item,index)
}
)
console.log(newArr)
filter
过滤出符合条件的元素,有返回值
const arr=[1,2,3,4,5,6];
const newArr=arr.filter(function(item, index) { return item % 2 === 0; });
console.log(newArr)
find
找到符合条件的项,并且返回第一项,返回来的是一个对象
const arr=[1,2,3,4,5,6];
const newArr=arr.find(function(item, index) { return item % 2 === 0; });
console.log(newArr)
slice
从数组中截取指定的字段,返回来
arr.slice(start,end) ;从start下标开始截取,一直到end结束,不包括end,也可以不写end,那么就是从start开始,如果start和end都不写就是全部截取
const arr=[1,2,3,4,5,6];
const newArr=arr.slice(2)
const newArr=arr.slice(2,3)
console.log(newArr)
splice(改变原数组)
有三种用法 第一种 删除 arr.splice(start,num)第一个参数是开始下标,第二个是删除个数
const arr=[1,2,3,4,5,6];
arr.splice(1,2)
console.log(arr)
第二种 替换 arr.splice(start,deletedCount,item)第一个参数是开始下标,第二个是替换个数,第三个是替换的数据,其实就是删除加添加,先删除,再把最后一个参数添加到删除的位置
const arr=[1,2,3,4,5,6];
arr.splice(1,2,8)
console.log(arr)
第三种 添加 arr.splice(start,0,item) 相当于不删除(删除0个),在该位置添加数据
const arr=[1,2,3,4,5,6];
arr.splice(1,0,8)
console.log(arr)
indexOf
查找元素的位置 arr.indexOf (item,fromIndex),从fromIndex这个下标开始,元素第一次出现的位置,可以不写,不写就是默认从0开始,存在返回下标,不存在返回-1
const arr=[1,2,3,4,5,6,1,2,3];
console.log(arr.indexOf(2))
console.log(arr.indexOf(2,3))
findIndex
找到符合条件的项的下标,并且返回第一个
const arr=[1,2,3,4,5,6];
const result=arr.findIndex(2);
console.log(result)
lastIndexOf
用来查找元素最后一次在数组中出现的位置
const arr = [1, 2, 3, 4, 5, 6,2];
const result = arr.lastIndexOf(2);
console.log(result)
includes
检查数组中是否存在给定元素,存在返回true,不存在返回false
const arr = [1, 2, 3, 4, 5, 6,2];
const result = arr.includes(2);
console.log(result)
some
判断数组中有没有符合条件的项(只要有,就返回true),没有返回false
const arr=[1,2,3,4,5,6];
const result=arr.some(function(item, index) { return item % 2 === 0; });
console.log(result)
every
判断数组中所有的项是否满足要求,如果全都满足,返回true,否则返回false
const arr=[1,2,3,4,5,6];
const result=arr.every(function(item, index) { return item % 2 === 0; });
console.log(result)
reduce
对每一个数组的每一个元素按序执行一个自定义函数。每一次运行reduce会将先前元素的计算结果作为参数传入,最后将其结果汇总为单个返回值。 可以用于累加,数组扁平化
let newArr=[[0,1],[2,3],[4,5]].reduce( function(pre,cur){ return pre.concat(cur) }, [] )
let count=[1,2,3,4,5,6].reduce( function(pre,cur){ return pre+cur }, 0 )
console.log(newArr,count)