2017-06-29 13 views
1

で返されます、私はこのようなコードがあるとしましょう:オブジェクト名は、文字列

var object = { 
property_1:'value_1' 
} 

var arr = [object] 

私は名前を文字列として返されたオブジェクトを取得できるようにしたいです。だから、次のようになります。

arr[0].name  /*return 'object'*/ 

または

arr[0].property_1.objectName  /*return 'object'*/ 

明らかにこれは有効なコードではありませんが、実際にこれを行うことができ、そのいずれかがあるのでしょうか?

+1

これはできません。オブジェクトは、どの変数がそれらを参照しているかを知らない。 – Barmar

+1

@Clonkex彼はプロパティ名を望まない、彼は変数名が欲しい。 – Barmar

+0

''object''はオブジェクトの名前ではありません。それはちょうどその値としてオブジェクトを持つことになる変数です。多くの変数は同じ値を持つことができます。どちらの変数は "名前"ですか? – Barmar

答えて

0

あなたがしたいことはできません。しかし、あなたが次のことを行うことができます:

var objects = { 
    object1: { 
     property_1:'value_1' 
    }, 
    object2: { 
     property_1:'value_2' 
    } 
}; 

// Use this to get an array with the names 
function getNames() { 
    return Object.keys(objects); 
} 

// Use this to get the properties of an object by it's given name 
function getProps(name) { 
    return objects[name]; 
} 

実行例:

var names = getNames(); 

for(i = 0; i < names.length; i++) { 
    var name = names[i]; 
    var values = getProps(name); 
    console.log(name); 
    console.log(values); 
    console.log(values.property_1); 
} 

出力:

object1 
{property_1: "value_1"} 
value_1 
object2 
{property_1: "value_2"} 
value_2 

このすべてあなたがES5を使用している検討。

Object.keys(objects).map(key => ({name: key, properties: objects[key]})) 

私は、これはいくつかの方法であなたを助け願っています:あなたは、単にオブジェクトの名前とプロパティのリストを取得するには、次のことができないES6で !

0

実際にこれを行うことができるものはありますか?

No. var objectは、アレイに割り当てているものではありません。その内容は、割り当てられた内容です。

var object = { 
    property_1:'value_1' 
} 

var arr = [object] 

は同じである:

var object1 = { 
    property_1:'value_1' 
} 
var object2 = object1; 
arr = [object2]; 

と同じオブジェクトへの第2の実施の物体1、オブジェクト2およびARR [0]はすべての点で、そのオブジェクトは、名前がありません。

関連する問題