2017-12-11 27 views
0

にアクセスされたオブジェクトのキーは、私は他のオブジェクトどのように私はJS</p> <p>で選択したオブジェクトのキーを取得して使用できるようにしたいのjavascript

が含まれている以下の目的を持っていると言うことができます表示することができます
verts = { A: {x: 7.5, y: 0, z: -7.5}, B: {x: 0, y: 0, z: -15 } 

たとえば、次のようにアイテムAにアクセスできます。 (Z、0:::7.5、YすなわちX -7.5)を

console.log(verts.A) 

は、それは私のオブジェクト内の値が表示されますが、私はこの場合、「A」で選択したオブジェクトにキーすなわちにアクセスする方法がわかりません。私は後で文字列として使用する変数として格納することができるようにしたいと思います。私はthis.keyやこの[key]を何らかの形で書くことができるはずだが、ここでは適切な答えを見つけることができないように感じる。私はjqueryを使用していますので、それを使用して迅速な方法がある場合はありがとうございます。キーを使用してオブジェクトを読んだ後は、これまで

+1

あなたは、 "選択したオブジェクト" とはどういう意味ですか:このように

?選択したオブジェクトがある場合は、コードの例を示してください。 – JLRishe

+0

ありがとうございますJLRisheおそらく私は間違った用語を使用していますが、私の例を見て、私はverts.Aの値にコンソールにログオンしてアクセスしますが、私はverts.Aの値だけを見ることができ、キーではありません。すなわちA – Nick

+0

おそらく、ここで関連性があるかもしれません。https://stackoverflow.com/questions/9907419/how-to-get-a-key-in-a-javascript-object-by-its-value –

答えて

0

あなたはこれをもっと複雑にしています。ある時点でどのキーを使用しているのか分かっている場合は、キーが必要なものすべてに渡されるようにするだけです。

//vertices stored as objects 
verts = { A: {x: 7.5, y: 0, z: -7.5}, B: {x: 0, y: 0, z: -15}, C: {x: 0, y: 0, z: -7.5} } 

//make a triangle using accessed vertices 
makeTriangle(verts, 'A', 'B', 'C') 

function makeTriangle(vertices, key1, key2, key3){ 
    $("example").append('\ 
    <a-triangle\ 
     id="' + key1 + '_'+ key2 + '_'+ key3 + '"\ 
     vertex-a="' + vertices[key1](joined) + '"\ 
     vertex-b="' + vertices[key2](joined) + '"\ 
     vertex-c="' + vertices[key3](joined) + '"\ 
    </a-triangle>'); 
} 
+0

これは良い解決策です、ありがとうJLRishe。私はキーを制御しているのでこのアプローチを使用しますが、そうでない場合は他の答えがうまくいくでしょう。これを見ていただきありがとうございます – Nick

1

として何かアドバイスのため

おかげで、もはやあなたが使用したキーへのバックリンクはありません。

あなたができる最善のことは、あなたが変数で使用しているキーを保存し、それを読むために角括弧表記を使用している:

var verts = { A: {x: 7.5, y: 0, z: -7.5}, B: {x: 0, y: 0, z: -15 } }; 
 
var key = 'A'; 
 
var result = verts[key]; 
 

 
console.log(key, result);

別のオプションは、あなたを実行することですこのリンクを構築するために、前処理による初期オブジェクト:

function preProcess(input){ 
 
    return Object.keys(input).reduce(function(p,c){ 
 
     var newObj = input[c]; 
 
     newObj._key = c; 
 
     p[c] = newObj 
 
     return p 
 
    },{}); 
 
} 
 

 
var verts = { A: {x: 7.5, y: 0, z: -7.5}, B: {x: 0, y: 0, z: -15 } }; 
 
var vertsWithKeys = preProcess(verts); 
 

 
var item = verts.A; 
 
console.log(item._key, item);

+0

ありがとうJamiec私はそれが唯一のユースケースを持っているかもしれませんが、それはできることが良いと思われるもののようです。 – Nick

+0

@Nick see update。理想的ではないIMOですが、あなたの要求に応えます。 – Jamiec

+0

ありがとうございましたJamiec、それは私が望んでいたようにかなり簡潔ではありませんが、それはあなたにありがとうございます – Nick

関連する問題