在JavaScript中表示数字序列

时间:2010-02-12 17:42:17

标签: javascript

这个数字序列可以用比这更少的字符(不包括空格)表示吗?

i = [0,1,2,3,4,5,6,7,8,0,3,6,1,4,7,2,5,8,0,4,8,6,4,2];

(52个字符)

或函数i,它在52个字符下返回相同的值

目的是减少用于表示代码的字符数。

3 个答案:

答案 0 :(得分:3)

I = '012345678036147258048642'.split('');

答案 1 :(得分:1)

我不一定推荐这个 ...(因为我认为你不应该“破坏”String对象)但理论上你可以这样做:

<script>
  String.prototype.toNumericalArray = function(){
    var arr = this.split('');
    for(var i=0;i<arr.length;i++){
      arr[i] = 0+i;
    }
    return arr;
  }
</script>

然后当你想要它时,你所需要的只是:

<script>
  s='012345678036147258048642';
  n = s.toNumericalArray();
  alert(typeof(n[3]));//number
  alert(typeof(n[7]));//number
  alert(typeof(n[9]));//number
</script>

如果您真的担心字符数,可以缩小所有变量/方法名称

i='012345678036147258048642'.x();

(因此,如果您排除初始原型,未来的任何调用将是33个字符(对于相同大小的列表))

答案 2 :(得分:1)

我总是使用逗号分隔数组

它的开销低于任何转换过程。

但想要一种快速方法来转换一串数字

成了一系列吸引我邪恶双胞胎的数字...

String.prototype.dA= function digitArray(){
    return eval('['+this.replace(/(\d)/g,'+$1,')+']');
}

i ='012345678036147258048642'.dA(); (34个字符)

// test i
for(var j= 0, L= i.length; j<L;j++){
    i[j]= i[j]+' ('+typeof i[j]+')';
}
i.join(', ')

/ *返回值: 0(数字),1(数字),2(数字),3(数字),4(数字),5(数字),6(数字),7(数字),8(数字),0(数字), 3(数字),6(数字),1(数字),4(数字),7(数字),2(数字),5(数字),8(数字),0(数字),4(数字), 8(数字),6(数字),4(数字),2(数字) * /