2017-02-20 7 views
0

私は、とてもシンプルに見えるものが期待していたように動作しない理由を調べたいと考えています。あなたがしようとすると、変数変数内に完全な配列名とインデックスを保存する

var arrayvariable = Array1[0] 

に入れた場合

Array1 = ["item1", "item2", "item3", "item4", "item5"]; 

Array1[0] = "changeditem1"; 

ARRAY1 [0]配列が正常に動作変更し、値を変更するために使用するこの方法は、

["changeditem1", "item2", "item3", "item4", "item5"] 

もののをchangeditem1します変数を使用して配列を変更する

arrayvariable = "changeditem1" 

Array1 = ["item1", "item2", "item3", "item4", "item5"]; 

はアレイに何もしません。私が行方不明になっていることや間違っていることがあれば誰かが説明することができれば、それは素晴らしいことです。ありがとうございました。

+0

JavaScriptはこのようには動作しません。配列要素のエイリアスを取得する方法はありません。 – Pointy

+0

あなたの比較に欠陥があります。 'arrayvariable [0] =" changeditem1 "'を試してください。 –

+0

Array1はarrayvariableとは異なるメモリロケーションを使用しています。したがって、Array1自体の変更はcontetntを変更しますが、arrayvariableの変更は他のメモリロケーションを変更するのではなく、独自のコンテンツを変更します。 –

答えて

0

非常に簡単です。それは配列とは関係ありません。

var a = "some value"; 
var b = a; 
var b = "change the value"; 
console.log(a); //some value 

=オペレータは、それが残ってに格納されている値を変更します。

したがって、行3のbの値を変更すると、値bのみが変更され、aではなく変更されます。

あなたは再びJavaScriptでa=b;

+0

答えはどうやって変数値を変更します。 – UndefinedUsername

+0

@UndefinedUsernameはい、それは最終的にオペアンプが求めているものです。 –

+0

それはおそらく究極の質問ですが、私は具体的にArray1 [0]を変数のための私の例として使用する可能な方法を見つけることを探していました。 – UndefinedUsername

0

を書き込むことによってbaすなわちにを割り当てる必要がありますaを変更するには、=演算子は、左のオペランドの右側からをコピーします。右側の変数がタイプオブジェクトでない限り、そのオブジェクトへの参照がコピーされます。

var obj = {num:5}; 
var number = 5; 
var array = [obj, number] 

obj.num = 10; 
number = 10; 

console.log(array[0].num) 
console.log(array[1]) 

はあなたの問題を解決するために、より詳細な説明

ためhereを参照してくださいあなたは、配列を変更することができるように、あなたはアイテムのインデックスを格納することができます。または、データをオブジェクトの配列として格納することができます。そのため、変数をコピーするときに、参照によって変更することができます。

関連する問題