所以这是我想出的函数代码,我不知道它有什么问题。 它一直给出 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
作为初始值。
注意:您已在此处切换 i
和 j
- 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/