【发布时间】:2013-01-28 07:31:32
【问题描述】:
我是 JS 函数和对象的新手 我正在尝试迭代一个数组...这是我的示例代码,我试图通过输入值获取硬币的倍数
var flag=0;var chipval=0;var num=0;
var main = function(coins){
var coinsarr = [1,5,10,25,50,100,500,501];var length=coinsarr.length
var remval = coins;
var coinskey = "";
while(flag==0){
for(i=0;i<length;i++){
if(coinsarr[i]>remval){
chipval = coinsarr[i-1];
num = parseInt(remval/chipval);
if(remval%chipval==0){
flag = 1;
break;
}else{
remval=remval%chipval;
$flag = 0;
break;
}
}
}
coinskey = coinskey+","+chipval+":"+num;
}
coinskey = coinskey.replace(/(^,)|(,$)/g, "")
alert(coinskey);
}
当我运行 main(120) 时,这将返回 100:2,10:2(这与 2 的 100 个硬币和 2 的 10 个硬币无关)
当我运行 main(720) 时,我遇到了内存泄漏...显示“此页面上的脚本使用了太多内存”; 谁能告诉我,问题出在哪里,否则这是正确的方法吗??
感谢您的时间和耐心...
【问题讨论】:
-
小心,
i正在泄漏到全局范围。 -
$flag = 0;中的$应该存在吗? -
看看这段代码
chipval = coinsarr[i-1];for i=0 -
我先用 PHP 编写了该代码,然后在 JS 中工作(这是一个拼写错误 Cerbrus)我删除了那个 $...我的逻辑有一些问题,我明白
标签: javascript performance memory-leaks