这个数字序列可以用比这更少的字符(不包括空格)表示吗?
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个字符下返回相同的值
目的是减少用于表示代码的字符数。
答案 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(数字) * /