数字数组(5+百万)
array with numbers (5+million)
我需要一个 "list",其数字范围从 0 开始到大约 500 万结束。我还必须在网络浏览器中显示它,所以我尝试了 javascript 和 php。当然,当 "loading" 都是数字时,浏览器会崩溃。有没有办法防止这种情况发生?真正让它在浏览器中工作?我想 Javascript 不是正确的语言,但我该如何解决这个问题?帮助将不胜感激:)
这是目前为止的代码
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]);
}
显示那么多数据而不会使浏览器崩溃的唯一方法是实施某种分页系统。意思是,一次只显示一部分结果。为此,您可以设置一次显示的最大结果数并跟踪页码。
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>
我需要一个 "list",其数字范围从 0 开始到大约 500 万结束。我还必须在网络浏览器中显示它,所以我尝试了 javascript 和 php。当然,当 "loading" 都是数字时,浏览器会崩溃。有没有办法防止这种情况发生?真正让它在浏览器中工作?我想 Javascript 不是正确的语言,但我该如何解决这个问题?帮助将不胜感激:)
这是目前为止的代码
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]);
}
显示那么多数据而不会使浏览器崩溃的唯一方法是实施某种分页系统。意思是,一次只显示一部分结果。为此,您可以设置一次显示的最大结果数并跟踪页码。
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>