创建数组
在 JavaScript 中,可以使用多种方法创建数组:
- 使用数组字面量(Array literal)
let arr1 = [1, 2, 3, 4, 5];
- 使用
Array
构造函数
let arr2 = new Array(1, 2, 3, 4, 5);
- 带参数的
new Array()
:当传入一个或多个参数时,new Array()
会创建一个包含这些元素的数组。 - 带长度的
new Array()
:当只传入一个数字参数时,new Array()
会创建一个具有指定长度的空数组。
虽然 new Array()
和数组字面量都可以创建数组,但数组字面量更简洁且性能更好。
// 使用 new Array() 创建包含多个元素的数组
let fruits = new Array('苹果', '香蕉', '橙子');
console.log(fruits); // 输出: ['苹果', '香蕉', '橙子']
// 创建一个长度为5的空数组
let emptyArray = new Array(5);
console.log(emptyArray); // 输出: [ <5 empty items> ]
console.log(emptyArray.length); // 输出: 5
- 使用
Array.of()
方法
let arr3 = Array.of(1, 2, 3, 4, 5);
- 使用
Array.from()
方法
let arr4 = Array.from('hello'); // ['h', 'e', 'l', 'l', 'o']
Array.of()
与 Array.from()
的主要区别
特性 | Array.of() |
Array.from() |
---|---|---|
用途 | 创建包含传入参数的新数组 | 将类数组对象或可迭代对象转换为数组 |
参数处理 | 每个参数作为数组的一个元素 | 将传入的类数组或可迭代对象的元素转换为数组元素 |
适用对象 | 任意数量和类型的参数 | 类数组对象(如 arguments 、NodeList )或可迭代对象(如 Set 、Map ) |
映射功能 | 不支持,直接创建数组 | 支持通过第二个参数传入映射函数 |
示例场景 | 需要根据多个独立值创建数组时使用 | 需要将类似数组的结构或可迭代的数据结构转换为数组时使用 |
// 使用 Array.of()
let arrayOfValues = Array.of(1, 2, 3, 'four', { five: 5 });
console.log(arrayOfValues);
// 输出: [1, 2, 3, 'four', { five: 5 }]
// Array.of() 无法实现映射
let simpleArray = Array.of(1, 2, 3);
console.log(simpleArray.map(x => x * 2));
// 输出: [2, 4, 6] (需要额