
我们的目标是处理一个二维数组(或称为矩阵),并为它的每一行创建一个正数之和。例如,如果有一个矩阵 [[1, -2, 3], [-4, 5, -6], [7, 8, -9]],我们希望得到一个新数组,其中包含 [1+3, 5, 7+8],即 [4, 5, 15]。这要求我们遍历矩阵的每一行,并在每行中识别并累加所有大于零的元素。
在实现上述功能时,开发者常会遇到两个主要问题,导致计算结果不准确。原始代码中的错误即是典型的示例:
累加器初始化错误: 原始代码将每行的正数和 posSum 初始化为该行的第一个元素 myArray[i][0]。
let posSum = myArray[i][0]; // 错误:如果第一个元素是负数,则累加器将从负值开始
如果 myArray[i][0] 是一个负数(例如 -5),那么 posSum 就会从 -5 开始累加。即使后续所有正数都被正确添加,最终结果也会因为这个负的起始值而变得不正确,因为它实际上包含了这个负数。而我们的目标是只计算“正数”之和。
内层循环边界错误: 原始代码的内层循环从索引 j = 1 开始遍历。
for (let j = 1; j < myArray.length; j++) { // 错误:跳过了每行的第一个元素
if (myArray[i][j] > 0) {
posSum += myArray[i][j];
}
}这意味着该行的第一个元素 myArray[i][0] 会被完全跳过,不会参与到后续的 if (myArray[i][j] > 0) 判断中。这进一步加剧了问题:如果 myArray[i][0] 是一个正数,它也不会被计入总和。
这些错误共同导致了即使行中存在正数,也可能因为负的起始值或元素被跳过而无法得到正确的正数之和。
为了避免上述问题,我们需要对代码进行两项关键修正:
下面是修正后的JavaScript代码示例:
<!DOCTYPE html>
<html>
<head>
<title>从矩阵行中计算正数之和</title>
</head>
<body>
<div id="result-container"></div>
<script>
// 1. 初始化一个3x3的二维数组
let myArray = [];
const rows = 3;
const cols = 3;
for (let i = 0; i < rows; i++) {
myArray[i] = [];
for (let j = 0; j < cols; j++) {
// 填充随机数,范围从-9到10
myArray[i][j] = Math.floor(Math.random() * 20 - 10) + 1;
}
}
// 2. 打印原始数组到控制台,以便对照
console.log("原始二维数组 (myArray):");
console.log(myArray);
// 3. 用于存储每行正数之和的数组
let F = [];
// 4. 遍历二维数组的每一行
for (let i = 0; i < myArray.length; i++) { // 外层循环遍历行
// 关键修正1: 每行的正数和累加器必须初始化为0
let posSum = 0;
// 关键修正2: 内层循环必须从索引0开始,遍历该行的所有元素
for (let j = 0; j < myArray[i].length; j++) { // 内层循环遍历列
// 检查当前元素是否为正数
if (myArray[i][j] > 0) {
posSum += myArray[i][j]; // 如果是正数,则累加
}
}
F.push(posSum); // 将当前行的正数和添加到结果数组F
}
// 5. 打印结果数组到控制台和HTML页面
console.log("每行正数之和数组 (F):");
console.log(F);
// 将结果输出到HTML页面
let outputHtml = `<h3>原始二维数组:</h3><pre>${JSON.stringify(myArray, null, 2)}</pre>`;
outputHtml += `<h3>每行正数之和数组 (F):</h3><pre>${JSON.stringify(F, null, 2)}</pre>`;
document.getElementById('result-container').innerHTML = outputHtml;
</script>
</body>
</html>正确地从二维数组的每行中计算正数之和,关键在于两点:一是确保累加器在每次计算新行之前都正确地初始化为 0;二是确保内层循环完整地遍历了该行的所有元素,从索引 0 开始。遵循这些原则,可以避免常见的逻辑错误,并编写出健壮、准确的代码。这种严谨的初始化和循环控制策略,在处理任何累加或统计任务时都至关重要。
以上就是从二维数组行中计算正数之和并生成新数组的教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号