javascript - 尝试在obj1中提取最大值的错误Javascript

标签 javascript

.html文件的代码在这里:

<script>
n={}
obj1={}
obj1[Math.random()]={x:2}
obj1[Math.random()]={x:4}
obj1[Math.random()]={x:6}
for(i1 in obj1){for(i2 in obj1){if(obj1[i1].x>obj1[i2].x){max=obj1[i1].x}else{max=obj1[i2].x}}}
document.write(max)
</script>

执行该操作时,写入文档的值为6。

我改成这样:
<script>
n={}
obj1={}
obj1[Math.random()]={x:2}
obj1[Math.random()]={x:6}
obj1[Math.random()]={x:4}
for(i1 in obj1){for(i2 in obj1){if(obj1[i1].x>obj1[i2].x){max=obj1[i1].x}else{max=obj1[i2].x}}}
document.write(max)
</script>

值是4 ...

请告诉我obj1[i1].x大于obj1[i2].x的时刻。这很奇怪,因为我更改为obj [i1],但 undefined obj1 [Math.random()]对象,这给了我一个错误

max is not defined



什么?如果我说max=obj1[i1].x,再说一次max=obj1[i1].x,再说一次max=obj1[i1].x。 5比3小什么?

显然,我想运行我的程序并给出最大的obj1的x,但是javascript不能正常运行。

最佳答案

您每次都重新分配max。您的代码应如下所示:

var max = -Infinity;
for(var i1 in obj1){if(obj1[i1].x>max){max=obj1[i1].x}}

这将节省您的循环时间,并为您带来预期的结果。否则,max是执行的最后一次比较的最大值。

关于javascript - 尝试在obj1中提取最大值的错误Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44792357/

相关文章:

javascript - Angular Bootstrap UI Modal - ng-template 脚本中的访问 ID

javascript - 如何使用javascript(jquery)一一改变元素的颜色,然后再一一重置结果

javascript - 如何使用JQuery用Div包装数据动态数据

javascript - 需要javascript中最接近的整数值

javascript - 使用javascript将多维数组字符串化

javascript - 使用google脚本获取特定的HTML表格元素

javascript - 在 mongodb 数据库中搜索特定字符串

javascript - 获取 JSON 字符串时出现问题

javascript - VueJS 2 值绑定(bind)中的条件渲染

javascript - 使用 .live() 到 .autocomplete() 不会在 domchange 上触发