私より効率的な方法を求めます.
2079 ワード
<script>
/*
:http://www.iteye.com/topic/204049
:
:
String[] .
:
String[24] 8 , String[8],String[8],String[8] .
String[32] 10 , String[10],String[10],String[10],String[2].
?
, :
*/
function subArray(arr, spl){
var newarr = [];
var arrlen = arr.length;
if(arrlen < spl)
return ["Error array length."];
//
var result = arrlen % spl == 0 ? arrlen / spl : Math.floor(arrlen / spl) + 1;
for(var i=0; i<result; i++){
/*
:
1: 0~(spl-1)
2: (spl)~(2*spl-1)
3: (2*spl)~(3*spl-1)
*/
var temparr = [];
for(var j=0; j<spl; j++){
var curr = i*spl+j;
if(curr<arrlen)
temparr.push(arr[curr]);
}
newarr.push(temparr);
}
return newarr;
}
var arr = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',0,1,2,3,4,5,6,7,8,9];
var spl = 8;
//alert("Array length: "+ arr.length);
var oldtime = new Date;
var newarr = subArray(arr, spl);
document.writeln("Run time: " + (new Date - oldtime) + "ms<hr>");
for(var i=0;i<newarr.length;i++){
document.writeln("String[" + newarr[i].length + "]:" + newarr[i] + "<br />");
}
</script>
実は最初に、サイクルの中で直接にslice(s,e)を使って配列を切り取るという考えがありましたが、実際の過程では効率が数百倍遅くなっています.参照
var temparr=[];
for(var j=0;j<spl;j+){
var curr=i*spl+j;
if(curr
)
みんなも引き続き自分の考えを話してもいいです.