深入理解ES6读书笔记9:数组扩展

Array.of()与Array.from()方法

ES6之前创建数组使用Array构造器与数组字面量写法。
ES6新增了Array.of()与Array.from()方法。
Array.of():创建一个包含所有传入参数的数组,不管参数的数量与类型。
Array.from():将可迭代对象或者类数组对象转换为数组。

let items1 = new Array(); //创建数组,使用Array构造器
let items2 = new Array(3); //创建数组,只有一个参数且为整数类型时,参数表示数组长度
let items3 = new Array("3");//创建数组,只有一个参数且不是整数类型时,参数会成为数组的元素
let items4 = new Array(3,"3"); //创建数组,大于一个参数时,参数会成为数组的元素
let items5 = [3, 5]; //创建数组,使用字面量
let items6 = Array.of(3); //创建数组,使用Array.of,参数会成为数组的元素
let items7 = Array.of(3, 5);

console.log(items1); //[]
console.log(items2); //[, , ,]
console.log(items3); //["3"]
console.log(items4); //[3,"3"]
console.log(items5); //[3, 5]
console.log(items6); //[3]
console.log(items7); //[3, 5]

function translate() {
    let items = Array.from(arguments);
    console.log(items); //[1,2,3]
}
translate(1, 2, 3);

function translate2() {
    return Array.from(arguments, (value) => value + 1);
}
let numbers = translate2(1, 2, 3);
console.log(numbers); //[2,3,4]

let set = new Set([1, 2]);
let numbers2 = Array.from(set);
console.log(numbers2); //[1,2]

find()和findIndex()方法

两者均接受两个参数:一个回调函数、一个可选值用于指定回调函数内部的 this 。该回调函数可接收三个参数:数组的某个元素、该元素对应的索引位置、以及该数组自身。
回调函数第一次返回 true 时会停止查找。
find() 会返回匹配的值,而 findIndex() 返回匹配位置的索引。

let numbers = [1, 2, 3, 4, 5];
let r1 = numbers.find(function(value, index, arr){
    return value > 3;
});
console.log(r1); // 4
console.log(numbers.find(n => n > 3)); // 4

let r2 = numbers.findIndex(function(value, index, arr){
    return value > 3;
});
console.log(r2); // 3
console.log(numbers.findIndex(n => n > 3)); // 3

fill()方法

使用特定值填充数组中的一个或多个元素。
当只使用一个参数的时候,该方法会用该参数的值填充整个数组。
还可以接受第二个和第三个参数,用于指定填充的起始位置和结束位置(不包括结束位置的那个元素)。

let numbers = [1, 2, 3, 4];
numbers.fill(1, 2);
console.log(numbers.toString()); // 1,2,1,1
numbers.fill(0, 1, 3);
console.log(numbers.toString()); // 1,0,0,1

copyWithin()方法

将指定位置的成员复制到其他位置。
Array.prototype.copyWithin(target, start = 0, end = this.length)
第一个参数表示从该位置开始替换数据,第二个和第三个参数可选,用于指定读取的起始位置和结束位置

let numbers = [1,2,3,4,5,6];
numbers.copyWithin(2, 0);//从索引位置2开始,粘贴从位置0开始复制的元素
console.log(numbers.toString()); //1,2,1,2,3,4
numbers.copyWithin(2, 4);
console.log(numbers.toString());//1,2,3,4,3,4

includes()方法

ES2016引入的方法,判断某个数组是否包含给定的值。
第一个参数为要搜索的值,第二个参数为读取的起始位置,默认为0。

console.log([1, 2, 3].includes(2)); //true
console.log([1, 2, 3].includes(2,2)); //false
原文地址:https://www.cnblogs.com/gdjlc/p/14548659.html