一次将1位数添加到100,000个数字字符串的元素中?

时间:2012-03-09 18:11:15

标签: javascript jquery arrays

目标: 我想填充一个100,000位π的页面,一次一个数字。 以下是我到目前为止:http://jsfiddle.net/xnW6V/

它只是从变量重复相同的值。 我需要做的是变量100,00长(我从这里开始:http://www.geom.uiuc.edu/~huberty/math5337/groupe/digits.html) 并在每个setInterval事件中,向div添加一个新数字。

我提到了字符串的大小,以防万一传统方法存在问题。

感谢。

3 个答案:

答案 0 :(得分:3)

var i = 0,
    pi = '3.1415926535897932384626433832795049445',
    max = pi.length,
    div = $('div'),
    timer = setInterval(function() {
          div.append(pi.charAt(i++));
          i == max && clearInterval(timer);
    }, 50);

这里是小提琴:http://jsfiddle.net/yBtPE/


P.S。您确定要这样做吗?在将其推送到生产站点之前,您应该认真进行一些性能测试。

答案 1 :(得分:2)

听起来最好的方法是对长PI数字字符串进行硬编码,并且只是定期增加显示给用户的范围

(function() {
  // You'll need to expand to the 100,000 digits you want to show. Shortened here
  // since it's a sample 
  var pi = "3.141592653589793238462643383279502884197169399375105820974944592307816406286 208998628034825342117067982148086513282306647093844609550582231725359408128481";
  var index = 5;
  $('div').text(pi.substring(0, 5));
  var timer = setInterval(function() {
    $('div').append(pi[index]);
    index++;
    if (index === pi.length) {
      clearInterval(timer);
    }
  });
})();

小提琴:http://jsfiddle.net/xnW6V/3/

答案 2 :(得分:1)

我喜欢JaredPar的方法,但这是一种不同的方法(类似于你现在的方法)。只需将PI存储为字符串,并一次显示一个字符:

// var clipped so the SO markdown parser won't hang    
var bigPI = "3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460";
var current = 0;
setInterval(function() {
    $("div").append(bigPI.charAt(current));
    current++;
}, 50);

Working jsfiddle

注意

建议您在current == bigPI.length时停止计时器。