new Array(28).fill([])建立的数组
时间: 2024-03-16 12:47:46 浏览: 33
使用 `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` 方法会为每个元素都创建一个新的空数组,因此可以避免多个元素共享同一个数组对象的问题。
相关问题
vue new Array().fill()
回答: 在Vue中,使用`new Array().fill()`的方式来创建数组时需要注意一个bug。当使用`new Array().fill({})`来填充数组时,数组中的每个元素都会引用同一个对象。这意味着,如果修改其中一个元素的属性,其他元素的属性也会被修改。例如,当执行`let a = new Array(3).fill({});`后,`a`数组中的每个元素都引用了同一个空对象。当我们修改其中一个元素的属性时,例如`a\[0\].name = '张三';`,所有元素的属性都会被修改,结果为`\[{name: "张三"}, {name: "张三"}, {name: "张三"}\]`。\[3\]所以在使用`new Array().fill()`创建数组时,需要注意这个bug,如果需要每个元素都是独立的对象,可以使用其他方式来创建数组。
#### 引用[.reference_title]
- *1* *2* [从Vue看ES6中Array的fill方法](https://blog.csdn.net/fredricen/article/details/109842356)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [new Array(n).fill()创建数组](https://blog.csdn.net/zqlbanzhuan/article/details/127865785)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
new Array(arr.length).fill初始化固定长度的有序数组
你可以使用 `Array.from` 方法来实现初始化固定长度的有序数组。这个方法接受一个类似数组的对象(array-like object)或可迭代对象,并返回一个新的数组实例。
下面是使用 `Array.from` 方法初始化固定长度的有序数组的示例代码:
```javascript
const length = arr.length;
const initializedArray = Array.from({ length }, (_, index) => index);
```
在上面的代码中,我们首先使用 `arr.length` 获取数组 `arr` 的长度,然后通过传递一个对象给 `Array.from` 来指定要生成的数组的长度。接下来使用箭头函数作为映射函数,将每个元素的值设置为它的索引。最后,将生成的数组赋值给 `initializedArray` 变量。
这样,你就可以通过 `initializedArray` 来访问初始化后的有序数组了。