二、数组扩展
//Array.of()
//定义:用于将一组值,转换为数组
Array.of(); //[]
Array.of(1); //[1]
Array.of(1,2,3); //[1, 2, 3]
Array.of(4,5).length; //2
// copyWithin()
// 定义:将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组(会修改当前数组)
// 接受三个参数copyWithin(target, start , end)
// target(必需):从该位置开始替换数据。如果为负值,表示倒数。
// start(可选):从该位置开始读取数据,默认为 0。如果为负值,表示从末尾开始计算。
// end(可选):到该位置前停止读取数据,默认等于数组长度。如果为负值,表示从末尾开始计算。
[1, 2, 3, 4, 5].copyWithin(0, 3) ; //[4, 5, 3, 4, 5]
//将从3号位直到数组结束的成员(4和5),复制到从0号位开始的位置,结果覆盖了原来的1和2。
[1, 2, 3, 4, 5].copyWithin(0, 3, 4) //[4, 2, 3, 4, 5]
//将从3号位开始4号位结束的成员,复制到从0号位开始的位置,结果覆盖了原来的1。
[1, 2, 3, 4, 5, 6, 7].copyWithin(0, 3, 5) //[4, 5, 3, 4, 5, 6, 7]
//将从3号位开始5号位结束的成员(4和5),复制到从0号位开始的位置,结果覆盖了原来的1和2。
[1, 2, 3, 4, 5].copyWithin(0, -2, -1) //[4, 2, 3, 4, 5]
//-2相当于3号位,-1相当于4号位,代码等同于[1, 2, 3, 4, 5].copyWithin(0, 3, 4)
//find()
// find()用于找出第一个符合条件的数组成员。它的参数是一个回调函数,,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该成员。如果没有符合条件的成员,则返回undefined。
// find方法的回调函数可以接受三个参数,依次为当前的值、当前的位置和原数组
var arr = [3,4,7,9];
var a = arr.find(function(item,index,arr){ //用于找出第一个符合条件的数组成员
return item >5
});
console.log(a);
//另一种写法
[1, 11, 12, 10].find(n => n > 5) //11
//findIndex()
//findIndex方法的用法与find方法非常类似,返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1
var arr = [3,4,7,9];
var a = arr.findIndex(function(item,index,arr){ //返回第一个符合条件的数组成员的位置
return item >5
});
console.log(a); //2
//fill()
//定义:用于将一个固定值替换数组的元素
array.fill(value, start, end)
// value(必需):填充的值。
// start(可选):开始填充位置。
// end(可选):停止填充位置 (默认为 *array*.length)。
var arr = ["blue", "Orange", "red", "green"];
arr.fill("abc", 2, 4); //["blue", "Orange", "abc", "abc"]
//includes()
//定义:方法返回一个布尔值,表示某个数组是否包含给定的值,与字符串的`includes`方法类似
[1, 2, 3].includes(2) // true
[1, 2, 3].includes(4) // false
var arr = ["blue", "Orange", "red", "green"];
arr.includes('blue'); //true
// 该方法的第二个参数表示搜索的起始位置,默认为0。如果第二个参数为负数,则表示倒数的位置,
// 如果这时它大于数组长度(比如第二个参数为-4,但数组长度为3),则会重置为从0开始。
[1, 2, 3].includes(3, 3); // false
[1, 2, 3].includes(3, -1); // true
//flat()
//定义:用于将嵌套的数组“拉平”,变成一维的数组。
[1, 2, [3, 4, 6],[7, 8]].flat(); //[1, 2, 3, 4, 6, 7, 8]
//该方法返回一个新数组,对原数据没有影响。
var arr = [1, 2, [3, 4, 6],[7, 8]];
var a = arr.flat();
console.log(arr); //[1, 2, [3, 4, 6],[7, 8]];
console.log(a); // [1, 2, 3, 4, 6, 7, 8]
//默认只会“拉平”一层,如果想要“拉平”多层的嵌套数组,可以将flat()方法的参数写成一个整数,表示想要拉平的层数,默认为1。
//flat()的参数为2,表示要“拉平”两层的嵌套数组
[1, 2, [3, [4, 6]],[7, 8]].flat(2);//[1, 2, 3, 4, 6, 7, 8]
[1, 2, [3, [4, [6]]],[7, 8]].flat(2); //[1, 2, 3, 4, [6], 7, 8]
//如果不管有多少层嵌套,都要转成一维数组,可以用Infinity关键字作为参数。
[1,2,[3,4,[5,[6,[7,[8]]]]]].flat(Infinity); //[1, 2, 3, 4, 5, 6, 7, 8]
网友评论