gpt4 book ai didi

javascript - 合并并求和多个数组中的值

转载 作者:行者123 更新时间:2023-11-30 08:47:00 27 4
gpt4 key购买 nike

此处提供了所有相关代码http://jsfiddle.net/DuWGj/ ,以及 print(appendTo) 语句。

为简短起见,我制作了 4 个数组。每个数组有 4 个数字。然后我创建一个新数组,其中包含所有这 4 个数组编号,因此它是一个数组。

例如最终结果是

four.myArraysCombined = [5,3,20,12,3,4,18,11,12,5,8,2,1,9,10,6];

然而,当我尝试

four.myArraysCombined[3] ,它说它是未定义的。

很明显,当我执行以下操作时,它不起作用

var total = 0;
for (var x = 0; x < 16; x++) {
total += four.myArraysCombined[x]);
}

我希望能够使用 for 循环将所有这些数字相加。我已经尝试了几件事,但它一直给我未定义或 NaN。

最佳答案

发生了什么

运行后:

prePickNumbers(four, 4, 40, 20, 1);

...four.myArraysCombined 的值是:

[[[2, 17, 20, 1], [7, 2, 20, 11], [7, 14, 3, 16], [12, 17, 3, 8]]]

换句话说,这不是您声称的结果。在继续之前,您应该验证在过程的每一步您都得到了您认为的结果。就目前而言,您没有展平的阵列。您需要先解决这个问题,然后再进行迭代和求和。

为什么会这样

最终结构的原因从 prePickNumbers 中的以下行开始:

tempMyArraysCombined.push(objName.myArray[x]);

您每次都将一个数组 插入另一个数组,因此循环后的结果是一个数组数组。但是,然后,您将那个结果插入另一个数组:

objName.myArraysCombined.push(tempMyArraysCombined);

所以最终结果实际上是一个包含数组数组的数组(注意上面输出中额外的一组括号)。问题是您在此过程的每一步都将整个数组插入输出,这造成了嵌套的困惑。您应该推送每个数组的元素,而不是数组本身。

如何修复

这是一种可能的解决方案。将 prePickNumbers 替换为以下函数:

function prePickNumbers(objName, theNum, theSumNum, theMaxNum, theMinNum) {
var tempMyArraysCombined = [];
for (var x = 0; x < theNum; x += 1) {
pickNumbers(objName.myArray[x], theNum, theSumNum, theMaxNum, theMinNum);
for (var j = 0; j < objName.myArray[x].length; j++) {
objName.myArraysCombined.push(objName.myArray[x][j]);
}
}
}

关于javascript - 合并并求和多个数组中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21118706/

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