繁体   English   中英

我不知道为什么我的 min function 不工作它一直给我 0 作为答案

[英]I have no Idea why is my min function not working it keeps on giving me 0 as an answer

所以这是我想出的 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作为我的答案。

您的 function 不起作用,因为您使用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));

另一种选择是将矩阵展平为单个数组, map 将所有项目转换为数字,并传播到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));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM