こん○○は、さっそくですがJavaScriptの質問です。
var a=new Array(1,2,3)
として、そのコピーはどうやったら作れますか?
var b=new Array()
for(var i=0;i<a.length;i++) {b[i]=a[i]}
とすると遅いかなと思いまして、なんかあったら教えて下さい。
var a=new Array(1,2,3);
var b=a;
とか。
>>1
それは同じオブジェクトを別の変数に代入しているだけでは…
>>0
IE5.5以上, NN4.06以上になりますけれども
var b = Array.apply( null, a );
とか。速いかどうかは解りません。
>>2
>それは同じオブジェクトを別の変数に代入しているだけでは…
全くもって御意。ボケ->自分(恥)。
weenさん、いつもありがとうございます!
var b=cloneArray(a);
function cloneArray(a){
if(typeof window.Function!='undefined'&&Function.prototype.apply)
return Array.apply(null, a);
else if(typeof Array.prototype!='undefined'&&Array.prototype.slice)
return a.slice(0);
else{
var
b=new Array,
c=a.length,
i=0;
for(; i<c; i++)
b[i]=a[i];
return b;
}
}
とするのが自然であるとしても、手短に cloneArray を
function cloneArray(a){
if(typeof Array.prototype!='undefined'&&Array.prototype.slice)
return a.slice(0);
else{
var
b=new Array,
c=a.length,
i=0;
for(; i<c; i++)
b[i]=a[i];
return b;
}
}
としても同じ結果かも。
そしてこの >>2 が >>0 の求める範囲に収まるのだろう。
しかし、
a[unescape('%uFF10')]=0;
とかには対応出来ないわけで、完全なクローンを実現する為には、結局
function cloneArray(a){
var
b=new Array,
p;
for(p in a)
b[p]=a[p];
return b;
}
とするのが自然であるように思う。効率云々は求めようがない。
意味がやっと分かりました。
new Array()
new Array
Array()
は同じですか。
CopyToみたいなことがしたかったので完了です。ありがとうございました。