【ES6】JavaScript数组-数组的创建-构造函数-字面量-Array.from()-Array.of()静态方法

创建数组有很多方式,今天介绍四种,构造函数方式,字面量方式以及ES6新增的两种创建数组的静态方法from()和of()

1. 构造函数

使用Array构造函数创建数组

let colors1 = new Array();
let colors2 = new Array(20);
let colors3 = new Array("red", "blue", "green");

其中的new可以省略

let colors1 = Array(10); // 传数字就是数组长度(元素个数)
let colors2 = Array("green"); // 其他就是数组的元素

2. 字面量

使用数组字面量(array literal)

let colors = ["red", "green"];
let names = [];
let values = [1,2,];

在使用数组字面量表示法创建数组不会调用Array构造函数

3. Array.from()

用于将类数组结构转换成数组实例

第一个参数是类数组对象,即任何可迭代的结构

  1. 字符串
let s = Array.from("Matt"); // ["M", "a", "t", "t"]
  1. 映射
const m = new Map().set(1,2).set(3,4); 
let map = Array.from(m); // [[1,2], [3,4]]
  1. 集合
const s = new Set().add(1).add(2).add(3).add(4);
let set = Array.from(s); // [1, 2, 3, 4]
  1. 任何可迭代对象
const iter = {
    
    
	*[Symbol.iterator](){
    
    
		yield 1;
		yield 2;
		yield 3;
		yield 4;
	}
};
let i = Array.from(iter); // [1, 2, 3, 4]
  1. 对现有数组执行浅复制
const a1 = [1, 2, 3, 4];
const a2 = Array.from(a1); //[1, 2, 3, 4]
a1 === a2 // false
  1. arguments对象
function getArgsArray(){
    
    
	return Array.from(arguments);
}
console.log(getArgsArray(1, 2, 3, 4)); //[1, 2, 3, 4]

Array.from() 还接收
第二个可选的映射函数参数,这个函数可以直接增强新数组的值
第三个参数,指定映射函数中的this值

const a1 = [1, 2, 3, 4];
const a2 = Array.from(a1, x => x**2); // [1, 4, 9, 16]
const a3 = Array.from(a1, function(x) {
    
    return x ** this.exponent}, {
    
    exponent: 2}); // [1, 4, 9, 16]

4. Array.of()

用于将一组参数转换成数组实例
代替ES6之前的Array.prototype.slice.call(arguments)

console.log(Array.of(1, 2, 3, 4)); // [1, 2, 3, 4]
console.log(Array.of(undefined)); [undefined]

猜你喜欢

转载自blog.csdn.net/weixin_44972008/article/details/113105956