2016-01-19 64 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