javascript - JavaScript:数组中的最大值
问题描述
该函数仅在数组的第一个 (arr[0])或最后一个索引 (arr[arr.length-1])时才返回最大数字。如何修复逻辑错误?
function isGreater(arr) {
let a = arr[0];
for (let i = 0; i < arr.length; i++) {
var isGreat = (a < arr[i]) ? arr[i] : a;
}
return isGreat;
}
console.log(isGreater([7, 9, 10000, 11, 25, 20]));
// output=> 20, expected output 10000
console.log(isGreater([7, 11, 25, 2]));
// output=> 7, expected output 25
解决方案
逻辑错误是您将arr[i]
或分配a
给isGreat
,但从未与isGreat
比较arr[i]
。
只是重用a
而不是使用isGreat
:
function isGreater(arr) {
let a = arr[0];
for (let i = 1; i < arr.length; i++) {
a = a < arr[i] ? arr[i] : a;
}
return a;
}
console.log(isGreater([7, 9, 10000, 11, 25, 20]));
console.log(isGreater([7, 11, 25, 2]));
请注意,我更新它以跳过循环中的第一个索引,因为a
已经包含该值。
这一行:
a = a < arr[i] ? arr[i] : a;
如果您愿意,可以是这样:
if (a < arr[i]) {
a = arr[i];
}
我认为这是一个练习。如果没有,您可以像这样更直接地获得结果:
// ES2015+
function isGreater(arr) {
return Math.max(...arr);
}
或这个:
// ES5 and earlier
function isGreater(arr) {
return Math.max.apply(Math, arr);
}
推荐阅读
- java - 我的保存方法只保存背景而不是 Java GUI 中的绘制图像
- html - 如何将 HTML 按钮中的图标与文本分开移动?
- html - 在侧边栏Angular外部单击时如何关闭右侧边栏?
- unity3d - 如何将AR核心项目改为AR基础
- python - 如何在 Django 中的同一表单上使用 GET 和 POST
- google-colaboratory - 无法从已安装的 jupyter notebook 连接到 google colab
- python - 如何在 PyQt5 Pixmap 中移动像素列?
- delphi - DelphiScript - 字符串到日期时间/到 18 位时间戳
- python - 我的机器人没有以正确的延迟回复
- android - Kotlin - 检查 URL 是否可访问