数组常用方法
方法 | 介绍 |
---|---|
push() | 向数组尾部添加元素,返回添加后的数组长度,原数组改变 |
pop() | 从数组的尾部删除一个元素,返回删除的元素,原数组改变 |
unshift() | 向数组头部添加元素,返回添加后的数组长度,原数组改变 |
shift() | 从数组的头部删除一个元素,返回删除的元素,原数组改变 |
slice() | 提取数组,(1 起 2 止止不算)原数组不变 slice(-5): 截取数组后五位 |
splice() | 剪接数组,(1 起 2 长 3 添加)原数组改变 删除从 1 开始长度为 2 的值,再添加 3 |
reverse() | 反转数组,原数组改变 |
sort() | 排序,会改变原数组 arr.sort(function(a,b){return a - b;}); 从小到大 arr.sort(function(a,b){return b - a;}); 从大到小 |
join() | 参数作为连接字符,连接数组中的每一项,转换为字符串,原数组不变 |
concat() | 合并数组,arr1.concat(arr2,arr3) 原数组不变 |
find() | 查找第一个符合条件的项 |
findIndex() | 查找第一个符合条件项目的下标 |
toString() | 把数组转字符串(之间默认用逗号隔开),原数组不变 |
split(“,”) | 以 , 为分隔符把一个字符串分割成字符串数组 |
includes(x) | 判断数组中是否包含某元素x |
ES5数组的常用方法:
方法 | 介绍 |
---|---|
indexOf(item) | 查找数组中某元素第一次出现的索引,若无返回-1 |
lastindexOf(item) | 查找数组中某元素最后一次出现的索引,若无返回-1 |
forEach((item,index,arr) => {}) | 遍历数组,不接受返回值 |
map((item,index,arr) => {}, thisArg?) | 映射数组,接受返回值 map(Number) 把数组中每个元素转换成数字 map(String) 把数组中的每个元素转换成字符 |
filter((item,index,arr) => {}) | 筛选满足条件数组,接受返回值 |
every((item,index,arr) => {}, thisArg?) | 判断数组里每一个元素是否符合条件 |
some((item,index,arr) => {}, thisArg?) | 判断数组里是否有一个符合条件的元素 |
reduce() | 数组值累加(两个值累加完传递给第一个元素,直到最后) |
(item,index,arr):
item: 当前元素的值
index: 当前元素的索引
arr: 包含该元素的数组
thisArg: 回调函数中 this 的值(可选)
Array.fill、Array.from方法
通过new Array
函数构造实例的时候带入参数,可以生成该参数长度的空数组
通过Array.fill
函数可以将数组的每一项都改编为参数值
或Array.from
函数接收两个参数即可,第一个参数为数组或对象,都表示返回数组的长度。当参数为数组时它确定了返回的新数组长度,当参数为对象时,需要添加“length”属性表明数组长度,第二个参数为一个函数,即第一个数组参数中的每一项都调用该函数。可用于将获取到的标签列表,转换为数组的形式存储在变量中。
// 要求返回一个长度为参数值并且每一项值都为参数值的数组
const _createArray = (number) => {
return Array(number).fill(number)
}
const _createArray2 = (number) => {
return Array.from({ length: number }, () => number)
}
数组去重
1、利用数组的 indexOf 方法,新建一个空的新数组,循环遍历旧数组,判断新数组中是否有当前的元素,如果有就跳过,如果没有就执行 push 方法。
let arr = [1, 1, 2, 2, 3, 3, 4, 5];
let newArr = [];
arr.forEach(item => {
if (newArr.indexOf(item) < 0) {
newArr.push(item);
}
});
2、利用数组的 splice 方法,先利用 sort 方法对数组进行排序,然后循环遍历数组,比较前一项与后一项是否相同,如果相同就执行 spilce 方法删除当前项。
3、利用 ES6 中 Set 不能存放相同元素的特点,配合…展开运算符进行去重。
let arr=[1,2,3,4,3,2,1,5,3];
let set=new Set(arr);
//因为set结构并不是数组,所以需要转为数组
set=[...set];
//合并到一起之后是:
let set= [...new Set(arr)];
4、lodash 插件也可以去重。
判断是不是数组
let a = [1, 3, 4];
Array.isArray(a); //true
a instanceof Array; //true
a.constructor === Array; //true
Object.prototype.toString.call(a) === "[object Array]"; //true