Javascript can';t输入IF语句

Javascript can';t输入IF语句,javascript,if-statement,Javascript,If Statement,我试图解决Javascript中最大回文产品的Project Euler问题,我不明白为什么程序不输入IF语句IF(number.toString()==number.toString().split(“”).reverse().join(“”)): (功能palyndrom(最大、最小){ 顶部: 对于(i=max;i>min;i--){ 对于(c=max;c>min;c--){ 如果(i*c==c*i){ 警报(“与之前相同”); } 否则{ var编号=i*c; log('i*c='+i

我试图解决Javascript中最大回文产品的Project Euler问题,我不明白为什么程序不输入IF语句
IF(number.toString()==number.toString().split(“”).reverse().join(“”))

(功能palyndrom(最大、最小){
顶部:
对于(i=max;i>min;i--){
对于(c=max;c>min;c--){
如果(i*c==c*i){
警报(“与之前相同”);
}
否则{
var编号=i*c;
log('i*c='+i+'*'+c+'='+number);
//如果未输入此项,则警报不起作用
if(number.toString()==number.toString().split(“”).reverse().join(“”)){
警报('发现的孢粉植物:i*c='+i+'*'+c+'='+number);
打破顶端;
}   
}
}
}
})(999, 900);
将永远导致真实的结果。该功能永远不会到达其他部分。我想你想做的是

i === c
相反:

(function palyndrom(max, min) {
top:
    for (var i = max; i > min; i--) {
        for (var c = max; c > min; c--) {
            if (i === c) {
                alert('same was before');
            } else {
                var number = i * c;
                console.log('i*c = ' + i + '*' + c + ' = ' + number);

                if (number.toString() == number.toString().split('').reverse().join('')) {
                    alert('PALYNDROM FOUND: i*c = ' + i + '*' + c + ' = ' + number);
                    break top;
                }
            }
        }

    }
} )(999, 900);
将永远导致真实的结果。该功能永远不会到达其他部分。我想你想做的是

i === c
相反:

(function palyndrom(max, min) {
top:
    for (var i = max; i > min; i--) {
        for (var c = max; c > min; c--) {
            if (i === c) {
                alert('same was before');
            } else {
                var number = i * c;
                console.log('i*c = ' + i + '*' + c + ' = ' + number);

                if (number.toString() == number.toString().split('').reverse().join('')) {
                    alert('PALYNDROM FOUND: i*c = ' + i + '*' + c + ' = ' + number);
                    break top;
                }
            }
        }

    }
} )(999, 900);
您缺少一个“}”,这将导致错误。
除此之外,i*c总是等于c*i。 我修改了代码段,使其返回第一个回文。第二个函数返回所有回文的数组。 您不需要验证我!==c

(函数回文(最大,最小){
对于(变量i=max;i>min;i--){
对于(变量c=max;c>min;c--){
var编号=i*c;
if(number.toString()==number.toString().split(“”).reverse().join(“”)){
log('找到的回文:i*c='+i+'*'+c+'='+number);
返回号码;
}
}
}
})(999, 900);
//发现回文:i*c=993*913=906609
(函数回文(最大值、最小值){
var回文组={};
对于(变量i=max;i>min;i--){
对于(变量c=max;c>min;c--){
var编号=i*c;
if(!(回文中的数字)&&number.toString()==number.toString().split(“”).reverse().join(“”)){
回文[数]=1;
}
}
}
返回Object.keys(回文);
})(999, 900);
//[“819918”、“824428”、“861168”、“886688”、“888888”、“906609”]
您缺少一个“}”,这会导致错误。
除此之外,i*c总是等于c*i。 我修改了代码段,使其返回第一个回文。第二个函数返回所有回文的数组。 您不需要验证我!==c

(函数回文(最大,最小){
对于(变量i=max;i>min;i--){
对于(变量c=max;c>min;c--){
var编号=i*c;
if(number.toString()==number.toString().split(“”).reverse().join(“”)){
log('找到的回文:i*c='+i+'*'+c+'='+number);
返回号码;
}
}
}
})(999, 900);
//发现回文:i*c=993*913=906609
(函数回文(最大值、最小值){
var回文组={};
对于(变量i=max;i>min;i--){
对于(变量c=max;c>min;c--){
var编号=i*c;
if(!(回文中的数字)&&number.toString()==number.toString().split(“”).reverse().join(“”)){
回文[数]=1;
}
}
}
返回Object.keys(回文);
})(999, 900);


//[“819918”、“824428”、“861168”、“886688”、“888888”、“906609”]
哪个if语句?您是否厌倦了调试和跟踪变量的内容?您应该首先修复错误。运行代码段至少会生成一个。其中缺少一个括号。6{and 5}@Jamiec这个问题涉及整数,而不是浮点值。
如果(c*i==i*c)
这将始终是真的,函数将永远不会转到else部分。哪个if语句?您是否厌倦了调试和跟踪变量的内容?您应该首先修复错误。运行代码段至少会生成一个。其中缺少一个括号。6{and 5}@Jamiec这个问题涉及整数,而不是浮点值。
如果(c*i==i*c)
这将始终是真的,函数将永远不会转到else部分。这样做是为了避免重复,例如999*998和998*999<代码>如果(i==c)
它仍然检查已检查的表达式before@Olga嗯……这永远是真的,因为数学中有……for循环只检查i和c的当前值。如果你想检查你是否已经有了i和c的组合,你需要把已经检查过的组合保存在某个地方。但是我想说的是,让它完全运行并在最后删除双重值比较容易。既然你在第一个palyndrom停止了,那么无论如何也没有必要进行这种检查。但是它仍然会使表达式加倍,这不是我们需要避免的事情吗?当
I==c
时,为什么你需要避免呢?问题声明中没有说明这两个数字需要不同。这样做是为了避免重复,例如999*998和998*999<代码>如果(i==c)它仍然检查已检查的表达式before@Olga嗯……这永远是真的,因为数学中有……for循环只检查i和c的当前值。如果你想检查你是否已经有了i和c的组合,你需要把已经检查过的组合保存在某个地方。但是我想说的是,让它完全运行并在最后删除双重值比较容易。既然你在第一个palyndrom停止了,那么无论如何也没有必要进行这种检查。但是它仍然会使表达式加倍,这不是我们需要避免的事情吗?当
I==c
时,为什么你需要避免呢?问题陈述中没有任何内容表明这两个数字需要不同。