javascript - 我不知道为什么我的 min 函数不起作用,它一直给我 0 作为答案

标签 javascript arrays function

所以这是我想出的函数代码,我不知道它有什么问题。 它一直给出 0 作为我的代码。

function minValue(array) {
  let min = 0;
  for (let i = 0; i < array.length; i++) {
    for (let j = 0; j < array[i].length; j++) {
      if (array[j][i] == "string") {
        min = Math.min(min, parseInt(array[j][i]));
      } else {
        min = Math.min(min, array[j][i]);
      }
    }
  }
  return min;
}
let matrix = [
  [57, 71, 37, 99, 62, '83', '95', '54', 38, 25],
  [8, 64, 100, '51', 43, 21, 21, 33, 11, 43],
  [67, 25, 45, 67, 88, 72, 74, 77, 53, 38]
];

console.log(minValue(matrix));

我的答案一直是 0。

最佳答案

您的函数不起作用,因为您使用 0 作为初始值,并且它小于所有其他值。使用Infinity作为初始值。

注意:您已在此处切换 ij - array[j][i]。我还会删除条件,并始终转换为数字(我在此处使用了 + 运算符)。

function minValue(array) {
  let min = Infinity;
  for (let i = 0; i < array.length; i++) {
    for (let j = 0; j < array[i].length; j++) {
      min = Math.min(min, +array[i][j]);
    }
  }
  return min;
}

const matrix = [
  [57, 71, 37, 99, 62, '83', '95', '54', 38, 25],
  [8, 64, 100, '51', 43, 21, 21, 33, 11, 43],
  [67, 25, 45, 67, 88, 72, 74, 77, 53, 38]
];

console.log(minValue(matrix));

另一个选项是将矩阵展平为单个数组,将所有项目映射到数字,然后传播到 Math.min() 中:

const minValue = array => Math.min(...array.flat().map(Number));

const matrix = [
  [57, 71, 37, 99, 62, '83', '95', '54', 38, 25],
  [8, 64, 100, '51', 43, 21, 21, 33, 11, 43],
  [67, 25, 45, 67, 88, 72, 74, 77, 53, 38]
];

console.log(minValue(matrix));

关于javascript - 我不知道为什么我的 min 函数不起作用,它一直给我 0 作为答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61260852/

相关文章:

ios - Swift 中 UITableView 的动态搜索功能

javascript - 框架和 iframe 是否有独立的 javascript 上下文?

JavaScript 映射问题

c++ - 我陷入了C++的这种语法中。 “Check if the frequency of all the digits in a number is same”

javascript - 谷歌表格脚本 : Passing function as a parameter

javascript - 一种功能和一种封装形式?

Javascript - 从字符串获取数组值

javascript - 如何在 Angular2 的 ngIf 中检查变量类型

python - ASCII 字符串作为 Python 3 中 numpy 字符串数组的 dtype

c# - 数组中的 ArgumentOutOfRange 异常