es6-数组扩展

es6数组扩展

    • 扩展运算符
    • Array.from()
    • Array.of()
    • 新增数组实例方法
      • copyWithin()
      • find()和findIndex()
      • fill()
      • entries()、keys()和 values()
      • includes()

扩展运算符

在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()

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.of()可以将一组值转为数组,可以代替Array()

let arr = Array.of(1,2);
arr;	// [1, 2]
// 弥补了Array()当一个参数时,参数指定的是数组的长度而不是数组值
Array(3);	// [,,,]
Array.of(3);	//[3]

新增数组实例方法

copyWithin()

将在当前数组指定位置的成员复制到其他位置覆盖原有成员,返回改变后的数组。
接受三个参数:
1.target:开始替换的位置(必填)
2.start:从该位置开始读取数据,默认是0(选填)
3.ent:读取数据结束的位置,默认是数组长度(选填)

let arr = [1,2,3];
arr.copyWithin(0, 1, 2);	// [2, 2, 3]

find()和findIndex()

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))

fill()

用定值填充一个数组。
三个参数:
1.填充的值(必填)
2.开始填充的位置,默认是0(选填)
3.填充结束的位置,默认是数组长度(选填)

let a = [1,2,3];
a.fill(50, 1,2);	//[1, 50, 3]

entries()、keys()和 values()

se6提供entries()、keys()和 value()一一用于遍历数组。它
都返回一个遍历器对象,区别:
keys():是对键名的遍历;
values():是对键值遍历;
entries():是对键值对遍历;

includes()

类似字符串中的includes(),判断数组中是否包含给定的值。包含返回true,不包含返回false。
两个参数:
1.给定值(必填)
2.开始搜索的位置(选填)

let a = [1,2,3];
a.includes(1, 1);	// false
// 可以判断NaN
[NaN].includes(NaN);	// true

强大起来,才能远离渣子!
加油

你可能感兴趣的:(es6,es6,es6数组扩展)