2013-10-24 112 views
1

作爲練習,我試圖創建一個函數,它返回乘以三位數字所得到的迴文數字。據我所知,該函數正確地運行數字,但是,結果數組不正確。我不需要解決迴文問題......只是想到我可能會丟失什麼。我遇到了一些限制嗎?在javascript中將兩個數組中的所有數字相乘

var palindromic = function() { 
var a = []; 
var res = []; 
for (var i = 100; i < 1000; i++) { 
    a.push(i); 
} 
var ar = a.slice(0); 
a.map(function(x) { 
    for (var j = 0; j < ar.length; j++) { 
     var result = x * ar[j]; 
     if (result.toString() === result.toString().split("").reverse().join("")) { 
      res.push(result); 
     } 
    } 
    }) 
return res; 
}; 
+0

我注意到,當我改變功能爲0和99,而不是100和999之間的所有數字乘以它工作正常。 ?? – Ja5onHoffman

回答

1

很確定它只是試圖調用console.log()810,000次。如果您評論console.log行,它工作得很好。

var palindromic = function() { 
var a = []; 
var res = []; 
for (var i = 100; i < 1000; i++) { 
    a.push(i); 
} 
var ar = a.slice(0); 
a.map(function(x) { 
    for (var j = 0; j < ar.length; j++) { 
     var result = x * ar[j]; 
     //console.log(x + " : " + ar[j] + ' = ' + result); 
     if (result.toString() === result.toString().split("").reverse().join("")) { 
      res.push(result); 
     } 
    } 
}); 
return res; 
}; 

console.log(palindromic()); 
+0

這只是爲了看看它是否正確循環。陣列中最高的數字是99,999,但是數字應該是10萬。 – Ja5onHoffman

+2

從[這個小提琴](http://jsfiddle.net/zvjPF/1/),我得到906,609作爲最大。 'Array.map'可能不會按順序遍歷,所以res不能保證被排序。 –

+2

類似於湯姆,如果我運行此代碼將初始數組定義更改爲900到<1000之間,我會得到以下數字,全部在100,000s中:819918,824428,819918,906609,824428,886688,861168,888888, 861168,888888,886688,906609 – chsh