在es6的数组扩展中,扩展运算符是平时应用最多最方便的,扩展运算符(…)可以将一个数据转为用逗号分割的参数序列。
let a = [1, 2, 3];
console.log(...a); // 1, 2, 3
简单应用:
// 合并数组
let arr1 = [1, 2, 3];
let arr2 = [4, 5];
[...arr1, ...arr2]; // [1, 2, 3, 4, 5]
// 就解构赋值连用
let arr = [1, 2, 3, 4];
let [a, ...b] = arr;
a; // 1
b; // [2, 3, 4]
// 注意扩展运算符要放在最后,不然会报错
let [...b, a] = arr; //报错Rest element must be last element
// 字符串变数组
let str = 'test';
[...str]; // ["t", "e", "s", "t"]
// 与split()差不多
str.split(''); // ["t", "e", "s", "t"]
Array.from()可以将两类对象转化为数组,一类是类似数据的对象,一类是可遍历对象。
1.类似数据的对象
let arrObj = {
0: 'a',
1: 'b',
length: 2,
};
Array.from(arrObj); // ["a", "b"]
2.可遍历对象
function fun () {
console.log(Array.from(arguments))
};
fun(1,2,3); // [1, 2, 3]
Array.of()可以将一组值转为数组,可以代替Array()
let arr = Array.of(1,2);
arr; // [1, 2]
// 弥补了Array()当一个参数时,参数指定的是数组的长度而不是数组值
Array(3); // [,,,]
Array.of(3); //[3]
将在当前数组指定位置的成员复制到其他位置覆盖原有成员,返回改变后的数组。
接受三个参数:
1.target:开始替换的位置(必填)
2.start:从该位置开始读取数据,默认是0(选填)
3.ent:读取数据结束的位置,默认是数组长度(选填)
let arr = [1,2,3];
arr.copyWithin(0, 1, 2); // [2, 2, 3]
1.find():找出第一个符合条件的数组成员。参数是一个回调函数,数组成员以次进入回调函数执行,直到找到第一个返回true的数组成员将其返回,没有符合返回undefined。
let a = [1,2,3,-2];
a.find(v => {
return v < 0
}); // -2
// 回调函数接受三个参数1.当前值,2.当前位置,3.原数组
2.findIndex():和find()用法极其相似,返回满足条件的数组成员的位置,没有返回-1
let a = [1,2,3,-2];
a.findIndex(v => {
return v < 0
}); // 3
// 可以发现数组中的NaN
[NaN].findlndex(y => Object.is(NaN, y))
用定值填充一个数组。
三个参数:
1.填充的值(必填)
2.开始填充的位置,默认是0(选填)
3.填充结束的位置,默认是数组长度(选填)
let a = [1,2,3];
a.fill(50, 1,2); //[1, 50, 3]
se6提供entries()、keys()和 value()一一用于遍历数组。它
都返回一个遍历器对象,区别:
keys():是对键名的遍历;
values():是对键值遍历;
entries():是对键值对遍历;
类似字符串中的includes(),判断数组中是否包含给定的值。包含返回true,不包含返回false。
两个参数:
1.给定值(必填)
2.开始搜索的位置(选填)
let a = [1,2,3];
a.includes(1, 1); // false
// 可以判断NaN
[NaN].includes(NaN); // true
强大起来,才能远离渣子!
加油