var a=[1,2,3];
var b=a;
b.push(4,5);
console.log(b);
console.log(a);
[1,2,3]と値を入力します。しかしそれは印刷[1,2,3,4,5]どのように私はこれを達成することができます。助けてください。事前に感謝しますJavascriptで変数にアクセスするには?
var a=[1,2,3];
var b=a;
b.push(4,5);
console.log(b);
console.log(a);
[1,2,3]と値を入力します。しかしそれは印刷[1,2,3,4,5]どのように私はこれを達成することができます。助けてください。事前に感謝しますJavascriptで変数にアクセスするには?
配列のオブジェクト参照を別の1つの変数に割り当てています。しかし、ここでは、配列をコピーして新しいインスタンスを作成します。
var a=[1,2,3];
var b= a.slice(0);
b.push(4,5);
console.log(b); //[1,2,3,4,5]
console.log(a); //[1,2,3]
Array.prototype.slice
に沿って渡された開始値が0
あるとき、元の配列のコピーを作成します。しかし、ハードコードされた値を渡すことに本当に関心がある場合は、call
のバリアントを使用してください。
var b= [].slice.call(a);
お返事ありがとうございました。 – user1649134
これは、を参照するオブジェクトが「」であるためです。オブジェクトを深くクローンする必要があります。
のは、ビット程度メモリをお話しましょう
var a=[1,2,3];
var b= JSON.stringify(JSON.parse(a));
b.push(4,5);
console.log(b); //[1,2,3,4,5]
console.log(a); //[1,2,3]
申し訳ありません、あなたの答えの "深いクローンニング"の部分を読んでください:p –
@ジャロマンダXええ、これも深いクローニングのための方法です –
深いクローニングのためにこれを試してみてください...
a
が123
ときのアドレスで、例えば、メモリに保存されていますb = a
のコードで、123
の同じa
を参照するだけで、両方が同じplacを持つようになりますメモリ内の電子あなたがそれらのいずれかを変更するときに、あなたが他の を変更...だからあなたは何ができるか
var b= a.slice(0);
これらのいずれかの方法で、あなたの二番目の配列のためのメモリ内の別の場所を作成することですか
var b= JSON.stringify(JSON.parse(a));
又は
var b = [].concat(a);
「私は値[1,2,3]」を求めていますか? b? a?どちらも?何か? –
値を[1,2,3]、b値を[1,2,3,4,5]として使用したい。しかし、私は価値を得ています[1,2,3,4,5]。 – user1649134
配列は参照による呼び出しで動作するので(http://stackoverflow.com/questions/6605640/javascript-by-reference-vs-by-value)、concatメソッドを使用して問題を解決する必要があります。既存の配列を変更しなかった新しい配列。解決策:var a = [1,2,3]; b = [] .concat(a); b.push(4,5); console.log(b); console.log(a) – coder