Array.of和使用Array()或new Array()
时间: 2023-11-24 22:46:44 浏览: 36
`Array.of` 和 `Array()` 或 `new Array()` 都是用于创建数组的方法,但它们有一些不同之处。
`Array.of` 方法会创建一个具有变量数量参数的新数组,不考虑参数的数据类型,并返回这个新数组。示例:
```js
Array.of(1, 2, 3); // [1, 2, 3]
Array.of("a", true, 3); // ["a", true, 3]
```
而 `Array()` 或 `new Array()` 方法则是用于创建指定长度或固定数量元素的新数组。如果只传入一个数字参数,则创建的是具有指定长度的空数组。如果传入多个参数,则创建的是具有这些参数元素的新数组。示例:
```js
Array(3); // [ , , ]
Array(1, 2, 3); // [1, 2, 3]
```
需要注意的是,当传入单个数字参数时,`Array()` 和 `new Array()` 的行为可能与预期不同。例如:
```js
Array(3); // [ , , ]
new Array(3); // [ , , ]
Array(3).map(() => "a"); // [ , , ]
new Array(3).map(() => "a"); // ["a", "a", "a"]
```
在这个例子中,`Array(3)` 创建了一个具有三个空位的数组,不能使用数组方法如 `map()` 直接操作。而 `new Array(3)` 创建了一个具有三个未定义元素的数组,可以使用数组方法操作。
相关问题
es6中 Array.from方法和Array.of方法的区别
在ES6中,Array.from()和Array.of()都是用于创建新数组的方法,但它们的功能和使用方式有所不同。
1. Array.from():
- Array.from()方法用于从类数组对象或可迭代对象中创建一个新的数组实例。
- 它接受一个类数组对象或可迭代对象作为第一个参数,并可选地接受一个映射函数和一个上下文对象作为第二个和第三个参数。
- 它将类数组对象或可迭代对象中的每个元素转换为数组的对应元素。
- 映射函数可以在转换过程中对每个元素进行处理。
- 返回一个新的数组实例。
示例:
```javascript
// 从字符串中创建数组
const str = 'hello';
const arr = Array.from(str);
console.log(arr); // ['h', 'e', 'l', 'l', 'o']
// 从集合中创建数组
const set = new Set([1, 2, 3]);
const arr2 = Array.from(set, num => num * 2);
console.log(arr2); // [2, 4, 6]
```
2. Array.of():
- Array.of()方法用于创建一个包含任意数量参数的新数组实例。
- 它接受任意数量的参数,并将这些参数作为数组的元素,返回一个新的数组实例。
- 它解决了使用Array构造函数创建单个元素数组时的一些问题。
示例:
```javascript
const arr1 = Array.of(1, 2, 3, 4);
console.log(arr1); // [1, 2, 3, 4]
const arr2 = Array.of(5);
console.log(arr2); // [5]
const arr3 = Array.of(undefined);
console.log(arr3); // [undefined]
```
总结:
- Array.from()方法用于从类数组对象或可迭代对象中创建一个新数组,并提供映射功能。
- Array.of()方法用于创建一个包含任意数量参数的新数组实例。
Array.newInstance
`Array.newInstance` 是 Java 中的一个方法,用于创建一个指定类型和维度的新数组。它的语法如下:
```
public static Object newInstance(Class<?> componentType, int... dimensions)
```
其中,`componentType` 参数是要创建的数组元素类型,`dimensions` 参数是一个可变长度的整数数组,用于指定数组的维度。例如,要创建一个 `int` 类型的长度为 10 的一维数组,可以使用以下代码:
```
int[] array = (int[]) Array.newInstance(int.class, 10);
```
需要注意的是,`Array.newInstance` 返回的是一个 `Object` 类型的数组对象,需要进行强制类型转换才能使用。