2016-01-19 66 views
0

我需要一個「列表」,其數字範圍從0開始到500萬左右。我也必須在webbrowser中顯示它,所以我嘗試了javascript和php。當然,在「加載」所有數字時,瀏覽器崩潰。有沒有辦法阻止?要真正讓它在瀏覽器中工作?我想JavaScript不是正確的語言,但我怎麼解決這個問題?幫助將不勝感激:)array with numbers(5 + million)

這裏是到目前爲止的代碼

function range() 
{ 
    var array = []; 
    var start = (arguments[0] ? arguments[0] : 0); 
    var end = (arguments[1] ? arguments[1] : 9); 
    if (start == end) { array.push(start); return array; } 
    var inc = (arguments[2] ? Math.abs(arguments[2]) : 1); 
    inc *= (start > end ? -1 : 1); 
    for (var i = start; (start < end ? i <= end : i >= end) ; i += inc) 
     array.push(i); 
    return array; 
} 

var foo = range(1, 5607249) 

for(var i=0;i<foo.length;i++){ 
    document.write(foo[i]); 
} 
+5

爲什麼你想在同一時間顯示500萬級的數字?語言在這裏不是問題。存儲42MB的雙打也不是問題。 –

+0

分頁也許? –

+1

*瀏覽器崩潰*崩潰如何?你看到什麼錯誤(如果有的話)?哪個瀏覽器?哪個版本?你嘗試過其他瀏覽器嗎? 500萬不是那麼多,你應該能夠處理它。 –

回答

2

,以顯示沒有崩潰的瀏覽器的數據量以實現某種分頁系統的唯一途徑。意思是,一次只顯示一大塊結果。您可以通過設置一次顯示的最大數量的結果並跟蹤頁碼來完成此操作。

function range() 
 
{ 
 
    var array = []; 
 
    var start = (arguments[0] ? arguments[0] : 0); 
 
    var end = (arguments[1] ? arguments[1] : 9); 
 
    if (start == end) { array.push(start); return array; } 
 
    var inc = (arguments[2] ? Math.abs(arguments[2]) : 1); 
 
    inc *= (start > end ? -1 : 1); 
 
    for (var i = start; (start < end ? i <= end : i >= end) ; i += inc) 
 
     array.push(i); 
 
    return array; 
 
} 
 

 
var foo = range(1, 5607249); 
 
var results = document.querySelector('.results'); 
 
var page = 0; 
 
var PAGE_LENGTH = 100; 
 
function showResults() { 
 
    var start = page * PAGE_LENGTH; 
 
    var end = start + PAGE_LENGTH; 
 
    // Write them all at once and put line breaks between them 
 
    results.innerHTML = foo.slice(start, end).join('<br />'); 
 
} 
 

 
document.querySelector('.prev').addEventListener('click', function() { 
 
    // Make sure we don't go past the first page 
 
    page = Math.max(0, page - 1); 
 
    showResults(); 
 
}); 
 
document.querySelector('.next').addEventListener('click', function() { 
 
    // Don't go past the end of the results 
 
    page = Math.min(page + 1, foo.length/PAGE_LENGTH - 1); 
 
    showResults(); 
 
}); 
 

 
showResults();
<div class="results"></div> 
 
<button class="prev">Prev</button> 
 
<button class="next">Next</button>

+1

是的,那真棒!非常感謝你的努力! – anka