.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]并且我没有定义obj1 [Math.random()]对象,这给了我一个错误
max未定义
什么?如果我再说max=obj1[i1].x
,请再次max=obj1[i1].x
,重新 max=obj1[i1].x
。 5可能小于3 ??
显然,我想运行我的程序并提供最好的obj1的x,但javascript不起作用。
答案 0 :(得分:2)
您每次都会重新分配最多。您的代码看起来应该更像这样:
var max = -Infinity;
for(var i1 in obj1){if(obj1[i1].x>max){max=obj1[i1].x}}
这将节省您的循环时间并为您提供预期的结果。否则max是最后一次比较的最大值。
答案 1 :(得分:-1)
我终于得到了解决方案:
<script>
aux1=0
aux2=0
obj={}
length=20
for(i=0;i<length;i++){
obj[i]=Math.floor(Math.random()*10)
}
for(i in obj){
for(j in obj){
if(obj[j]<obj[eval(j)+1]){
aux1=obj[j]
aux2=obj[eval(j)+1]
obj[eval(j)+1]=aux1
obj[j]=aux2
}
}
}
for(i in obj){
document.write(obj[i])
}
alert("max is "+obj[0])
</script>
另一种解决方案是:
<p id="demo"></p>
<script>
prev=0
obj1={}
obj1[Math.random()]={x:2}
obj1[Math.random()]={x:4}
obj1[Math.random()]={x:6}
max=-Infinity
for(i1 in obj1){if(obj1[i1].x>max){max=obj1[i1].x}}
document.write(max)
</script>