如何获取自动生成的二维数组主对角线上的最小值
如何找到二维方阵主对角线上的最小值
没问题,我来帮你搞定这个问题!首先你的代码已经完美生成了10×10的随机二维数组,接下来只需要两步就能找到主对角线上的最小值:先明确主对角线的元素,再从这些元素里筛选出最小值。
先搞懂什么是主对角线
对于n×n的方阵,主对角线元素就是行下标和列下标相等的元素——也就是matrix[0][0]、matrix[1][1]、……、matrix[9][9]这10个元素。
方法一:用循环遍历(适合理解基础逻辑)
这种方法最直观,先初始化最小值为主对角线的第一个元素,然后逐个遍历主对角线元素,不断更新最小值:
// 初始化最小值为主对角线第一个元素 let minDiagonal = matrix[0][0]; // 遍历主对角线的每个元素(i从0到9,对应数组的行/列索引) for (let i = 0; i < matrix.length; i++) { const currentElement = matrix[i][i]; // 如果当前元素比记录的最小值小,就更新最小值 if (currentElement < minDiagonal) { minDiagonal = currentElement; } } console.log("主对角线上的最小值是:", minDiagonal);
方法二:用数组方法(更简洁的现代JS写法)
先通过map方法提取出所有主对角线元素,再用Math.min配合展开运算符直接找到最小值:
// 提取主对角线元素到新数组 const diagonalElements = matrix.map((row, index) => row[index]); // 找出数组中的最小值 const minDiagonal = Math.min(...diagonalElements); console.log("主对角线上的最小值是:", minDiagonal);
完整可运行代码(包含你的原代码+两种解法)
顺便提个小细节:你的原代码里循环变量i和j没有用let声明,会变成全局变量,我已经在下面的代码里修正了这个问题:
var matrix = Array.from(Array(10), () => new Array(10)); for(let i=0; i<10; i++){ for(let j=0; j<10; j++) matrix[i][j] = Math.floor(Math.random() * 100); } console.log("生成的10×10随机数组:", matrix); // 方法一:循环法找最小值 let minDiagonal1 = matrix[0][0]; for (let i = 0; i < matrix.length; i++) { const current = matrix[i][i]; if (current < minDiagonal1) { minDiagonal1 = current; } } console.log("主对角线最小值(循环法):", minDiagonal1); // 方法二:数组方法找最小值 const diagonalElements = matrix.map((row, index) => row[index]); const minDiagonal2 = Math.min(...diagonalElements); console.log("主对角线最小值(数组方法):", minDiagonal2);
你可以直接把这段代码复制到控制台运行,就能看到结果啦~
内容的提问来源于stack exchange,提问作者Dvenee
相关产品推荐
相关产品推荐

