2017-01-17 15 views
1

Javascript初心者はここに。私は現在、次の形式の連想配列を持っています:Javascript連想配列複数の文字列を数値にマップする方法

StringA: number, 
StringB: number 

複数の文字列を同じ番号にマップできますか?このような何か(いくつかの数字は、それらにマッピングされた文字列の数が異なる場合があります):

StringA, StringB, StringC: number, 
StringD, StringE: number, 
StringF, StringG, StringH, StringI: number 

は基本的に、私は私がvar holder = arr[StringA]またはvar holder = arr[StringC]を書くかどうかを所有者が同じ値を持っていると思います。それが不可能なら誰かが私を正しい方向に向けることができますか?どんな助けでも大歓迎です!

+0

; ' – dandavis

+0

番号を変更する必要がありますか?すべての文字列に適用する必要がありますか? –

+0

@Aᴍɪʀはい、各番号が更新され、それにマップされているすべての文字列に適用されます – Nishant

答えて

0

1つのオブジェクトに対して複数のキーを持つオブジェクトの値を持つオブジェクトを使用できます。

これは基本的に、共有オブジェクトへの参照を作成します。次に、オブジェクトの内部の値を変更することができます。

var temp = { value: 42 }, 
 
    object = { 
 
     a: temp, 
 
     b: temp, 
 
     c: temp 
 
    }; 
 

 
console.log(object.a.value); // 42 
 
object.b.value = 7; 
 
console.log(object.c.value); // 7

+0

もちろん動的なものがあれば、 – dandavis

+0

@dandavis、そうですが、おそらくデータ構造に疑問があります。 –

+0

@ NinaScholzなぜあなたはobject.b.value.value = 7;を書く必要はありません。値を変更するには? – Nishant

0

基本的にjsが、彼らがオブジェクトである連想配列を持っていません。 http://www.w3schools.com/js/js_arrays.asp

これを実現するにはポインタが必要ですが、JSにはポインタがありません。しかし、ポインタを使う方法はオブジェクトを使うことです。あなたが `` OA = OB = OC = 123のようなオーバーロード `case`es、またはハードコードそれらをして)` swtichを(使用し、数のVaRのプレースホルダを使用することができます

 var assoc = []; 
 
     assoc["stringA"] = { value: 1}; 
 
     assoc["stringB"] = assoc["stringA"]; 
 
     assoc["stringC"] = assoc["stringA"]; 
 

 
     assoc["stringD"] = { value: 10}; 
 
     assoc["stringE"] = assoc["stringD"]; 
 

 

 
     console.log("A: "+assoc["stringA"].value); 
 
     console.log("B: "+assoc["stringB"].value); 
 
     console.log("C: "+assoc["stringC"].value); 
 
     console.log("D: "+assoc["stringD"].value); 
 
     console.log("E: "+assoc["stringE"].value); 
 
     console.log("======== modify value ======"); 
 
     console.log("\nModify A to 2") 
 
     assoc["stringA"].value = 2; 
 
     console.log("B: "+assoc["stringB"].value); 
 
     console.log("C: "+assoc["stringB"].value); 
 

 
     console.log("\nModify E to 20") 
 
     assoc["stringE"].value = 20; 
 
     console.log("D: "+assoc["stringD"].value); 
 
     console.log("E: "+assoc["stringE"].value);

+0

という名前の小道具の代わりに、 'valueOf()'のオーバーロードを言及して、通常のNumberインスタンスのように扱うことができます。 – dandavis

関連する問題