new Array(28).fill([])建立的数组
时间: 2024-03-16 19:47:46 浏览: 107
node.js中的buffer.fill方法使用说明
使用 `new Array(28).fill([])` 建立的数组,会导致所有元素都指向同一个空数组。这是因为 `fill` 方法会将数组中的所有元素都设置为相同的值,而且这些元素实际上是引用同一个数组对象的引用。
例如,考虑以下代码:
```javascript
let arr = new Array(28).fill([]);
arr[0].push(1);
console.log(arr); // 输出 28 个 [1]
```
在上述代码中,我们首先使用 `new Array(28)` 创建了一个包含28个空元素的数组,然后使用 `fill([])` 方法将所有元素都设置为一个空数组。
接着,我们将数组的第一个元素 `arr[0]` 修改为包含一个元素1的数组。然而,由于所有元素都指向同一个空数组,因此结果是所有的元素都变成了 `[1]`。
为了避免这种问题,可以使用循环来创建每个元素,或者使用 `Array.from()` 方法创建一个新的数组。例如:
```javascript
let arr = Array.from({ length: 28 }, () => []);
arr[0].push(1);
console.log(arr); // 输出第一个元素为 [1],其余元素为 []
```
在上述代码中,我们使用 `Array.from()` 方法创建一个包含28个空数组的数组。与 `fill` 方法不同,`from` 方法会为每个元素都创建一个新的空数组,因此可以避免多个元素共享同一个数组对象的问题。
阅读全文