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