You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取自动生成的二维数组主对角线上的最小值

如何找到二维方阵主对角线上的最小值

没问题,我来帮你搞定这个问题!首先你的代码已经完美生成了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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 05:48:12