javascript - 使用 JavaScript 将 var res 更改为给定数组的最大值
问题描述
所以这是一个简单的,我只需要找到给定数组中的最大值。唯一的公理是数组中的所有项目都是数字。我的问题是 res 变量没有改变。我在 Python 中尝试了同样的方法,它没有任何问题,但在 JavaScript 中,该值似乎没有改变或更多 - 所以它仅针对 if 改变,然后它又回到原来的值。
所以我尝试摆弄 var 关键字,我尝试将 var 放在代码的不同位置(在 for 循环之外,在 for 循环中,在 if 语句中)我也尝试在没有 var 关键字的情况下这样做但它仍然不起作用
function max(arr){
var res = 0;
for (i=1; i>arr.length; i++){
if (arr[i-1]>arr[i]){
res = arr[i-1]
}
else if (arr[i-1]<arr[i]){
res = arr[i]
}
}
for (i=0; i<arr.length; i++){
if (res<arr[i]){
res = arr[i]
}
}
console.log(res)
}
这是有效的 Python 代码
def Max(arr):
res = 0
for i in range(1,len(arr)):
if arr[i-1]>arr[i]:
res = arr[i-1]
elif arr[i-1]<arr[i]:
res = arr[i]
for i in range(len(arr)):
if res<arr[i]:
res = arr[i]
print(res)
如果我们认为 arr 将是 [1,2,3,7,5,6] 结果应该是 7 (我在 Python 中得到的)但在 JavaScript 中我得到 0 或者我设置 res 的任何值(例如,如果res 设置为 10,那么它也将 console.log 10)
解决方案
您的循环永远不会在这种情况下工作:
i > arr.length
因为我从这里开始,1
这只是true
一个空数组。
一个更好的方法,一个循环和一个检查。
function max(array) {
var max = array[0],
i;
for (i = 1; i < array.length; i++) {
if (array[i] > max) max = array[i];
}
return max;
}
console.log(max([1, 2, 3, 7, 5, 6]))
推荐阅读
- php - 在单独的进程中运行测试时 PHPUnit 误报
- css - [MacOS][火狐]:
- find - linux cmd 上的警告:查找 . -删除-名称“*.swp”
- angular - 如何在此表单上配置年龄输入以使搜索表单在 Angular 中正常工作?
- node.js - 正则表达式(sass 变量)
- javascript - 自动完成仅匹配单词开头
- python - 计算多个向量的成对平方差
- python - 在Django中使用一个字典的值作为另一个字典的键?
- javascript - 如何为 HTML 表格创建所需的 JSON?
- javascript - 在 Javascript 中设置值会导致控制器出现空属性 - MVC