gpt4 book ai didi

javascript - Array.prototype.fill() 与 fill as I go 不同

转载 作者:行者123 更新时间:2023-11-29 16:50:18 25 4
gpt4 key购买 nike

<分区>

我正在研究一个将结果输出到二维数组的问题,并在每个元素中添加一个。

我尽可能地简化了代码以创建一个测试用例。如果我边走边填充数组,如下所示:

var a = [[], [], [] ,[] ,[], []];
var d1, d2;
for (d1 = 0; d1 < 6; d1++) {
for (d2 = 0; d2 < 6; d2++) {
a[d1][d2] = (a[d1][d2]) ? (a[d1][d2]) + 1 : 1;
}
}

我得到一个二维数组,其中所有值都是 1。但是,如果我使用 array.prototype.fill() 预填充数组,如下所示:

var a = new Array(6).fill(new Array(6).fill(0));
var d1, d2;
for (d1 = 0; d1 < 6; d1++) {
for (d2 = 0; d2 < 6; d2++) {
a[d1][d2] += 1;
}
}

我得到一个全是 6 的二维数组。即使我将 a[d1][d2] += 1 替换为旧的 a[d1][d2] = (a[d1][d2]) ? (a[d1][d2]) + 1 : 1;,(应该仍然有效,因为 0 和 undefined 都是假的)我仍然得到 6s。

据我所知,我的代码应该只是循环遍历每个元素并将前一个值加一。它不应多次接触任何元素,因此它们都应为 1。我是否提前填充数组应该无关紧要。

我的理解哪里出了问题?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com