Javascript 为什么我的for循环会在评估所有内容之前停止?
我试图从两个3位数的乘积中得到最大的回文。如果你不知道,回文是一个向前和向后相同的数字(例如:9009或55855等) 我的方法是循环遍历所有三位数字并将它们相乘,如果乘积与自身匹配,则使用该乘积更新变量“回文”。我预计是906609,但现在是99999 在这件事上我绞尽脑汁,没发现什么不对劲,但很明显有些东西。有什么想法吗Javascript 为什么我的for循环会在评估所有内容之前停止?,javascript,Javascript,我试图从两个3位数的乘积中得到最大的回文。如果你不知道,回文是一个向前和向后相同的数字(例如:9009或55855等) 我的方法是循环遍历所有三位数字并将它们相乘,如果乘积与自身匹配,则使用该乘积更新变量“回文”。我预计是906609,但现在是99999 在这件事上我绞尽脑汁,没发现什么不对劲,但很明显有些东西。有什么想法吗 //Hoist 'palindrome' var palindrome = 0; //Loop through 100 - 1000 for(var i = 100; i
//Hoist 'palindrome'
var palindrome = 0;
//Loop through 100 - 1000
for(var i = 100; i < 1000; i++) {
//Within that loop, loop through 100 - 1000
for(var k = 100; k < 1000; k++) {
//Convert product of K & I and reverse to strings
var product = (k * i).toString();
var reversed = product.match(/.{1}/g).reverse().toString().replace(/,/g, '');
//If the product and reverse are the same, update palindrome
if(product === reversed) {
if(reversed > palindrome) {
var palindrome = product;
}
}
}
}
//Expecting 906609, but returns 99999
console.log(palindrome)
//提升“回文”
var回文组=0;
//循环通过100-1000
对于(变量i=100;i<1000;i++){
//在这个循环中,循环100-1000次
对于(变量k=100;k<1000;k++){
//将K&I和反向的乘积转换为字符串
var乘积=(k*i).toString();
var reversed=product.match(/。{1}/g).reverse().toString().replace(/,/g');
//如果产品和反面相同,则更新回文
如果(产品===反向){
如果(反转>回文){
var回文组=乘积;
}
}
}
}
//应为906609,但返回99999
console.log(回文)
因为
"99999" > "906609" // true
在比较字符串时,会按词汇进行比较。您要比较数字:
if(+reversed > +palindrome)
因为
"99999" > "906609" // true
在比较字符串时,会按词汇进行比较。您要比较数字:
if(+reversed > +palindrome)
在你发布lol的时候就发现了,谢谢。不过,我使用Number()实现了它,Number(反向)>Number(回文)。但你绝对正确,这就是为什么。现在开始工作:)当你发布lol时,我就明白了,谢谢。不过,我使用Number()实现了它,Number(反向)>Number(回文)。但你绝对正确,这就是为什么。现在开始工作:)@quentin 913*993@昆汀913*993。。。