一、创建数组
1、构造函数
const arr = new Array(1,2,3); // [1,2,3]
const arr = new Array(2); // [empty, empty]
const arr = new Array("2"); // ["2"]
// 参数的不同,结果不同,ES6提供Array.of进行弥补
2、字面量
const arr = [1,2,3,4]
3、Array.from()
ES6新增
const arrayLike = { '0': 'a', length: 1};
const arr = Array.from(arrayLike);
// 类数组转数组
4、Array.of()
ES6新增
Array.of(3, 11, 8); //[3,11,8]
Array.of(3); // [3]
// 弥补构造函数的行为差异
数组方法比较多,有些方法也不常用,可能会过一段时间就会忘记,我整理了32个数组的方法,方便自己
二、数组方法(ES5之前)(12个)
方法名 | 功能 | 返回值 | 原数组是否改变 |
---|---|---|---|
concat() | 合并数组 | 合并之后的数据 | N |
join() | 使用分隔符,将数组转为字符串 | 转换后的字符串 | N |
push() | 在最后一位新增一或多个数据 | 长度 | Y |
pop() | 删除最后一位 | 删除的数据 | Y |
unshift() | 在第一位新增一或多个数据 | 长度 | Y |
shift() | 删除第一位 | 删除的数据 | Y |
reverse() | 反转数组 | 反转后的数组 | Y |
slice() | 截取指定位置的数组 | 截取的数组 | N |
sort() | 排序(字符规则) | 排序后的数组 | Y |
splice() | 删除指定位置,并替换 | 删除的数据 | Y |
toString() | 直接转为字符串 | 转成的字符串 | N |
valueOf() | 返回数组对象的原始值 | 数组对象的原始值 | N |
三、数组方法(ES5)(10个)
方法名 | 功能 | 返回值 | 原数组是否改变 |
---|---|---|---|
indexOf() | 查询并返回数据的索引 | 查到数据的索引 | N |
lastIndexOf() | 反向查询并返回数据的索引 | 查到数据的索引 | N |
forEach() | 遍历,每项都执行一次回调函数 | / | N |
map() | 映射,回调函数处理每项 | 每次的结果组成的数组 | N |
filter() | 过滤,回调函数检测每项 | 检测为true的元素组成的数组 | N |
every() | 判断,每项都是否满足条件 | 都满足,返回true | N |
some() | 判断,是否存在满足条件的项 | 一项满足,返回true | N |
reduce() | 归并,迭代数组的所有项 | 归并的最终值 | N |
reduceRight() | 反向归并,反向迭代数组的所有项 | 归并的最终值 | N |
Tips1
ES5中提供的forEach、map、filter、every、some5个遍历方法都使用一个回调函数参数来执行,其实它们是可以传两个参数
array.forEach(function(value, index, slef){
console.log(this);
}, obj);
// 回调函数里的this指向第二个参数obj
// 回调函数三个参数:当前值、当前索引、整个数组
方法名 | 功能 | 返回值 | 原数组是否改变 |
---|---|---|---|
Array.isArray() | 判断提供的对象是否是数组 | 布尔值 | N |
四、数组方法(ES6)(10个)
方法名 | 功能 | 返回值 | 原数组是否改变 |
---|---|---|---|
copyWithin() | 在当前数组,将指定位置的成员复制到其他位置 | 改变后的数组 | Y |
find() | 查询,第一个符合条件的数组项 | 查到的数组项 | N |
findIndex() | 查询,第一个符合条件的数组项索引 | 查到的数组项索引 | N |
fill() | 填充,以定值填充数组 | 改变后的数组 | Y |
entries() | 对键值对的遍历 | 包含键值对的遍历器对象 | N |
keys() | 对键名的遍历 | 包含键名的遍历器对象 | N |
values() | 对键值的遍历 | 包含键值的遍历器对象 | N |
includes() | 判断,数组是否包含给定的值 | 布尔值 | N |
flat() | 把多维数组拉平 | 拉平的数组 | N |
flatMap() | 先执行一个map操作,再进行flat | 拉平的数组 | N |
Tips2
ES6中提供的find、findIndex可以传两个参数,第二个参数绑定this
array.find(function(value, index, slef){
console.log(this);
}, obj);
// 回调函数里的this指向第二个参数obj
// 回调函数三个参数:当前值、当前索引、整个数组