Js中数组常用的方法总结

数组常用方法

方法 介绍
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值