.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=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/

10-13 01:53