2017-06-29 3 views
1

sagen, dass ich einen Code wie dieses:Objektnamen in einem String zurück bekommen

var object = { 
property_1:'value_1' 
} 

var arr = [object] 

Ich möchte in der Lage, einen Objektnamen als Zeichenfolge zurückgegeben zu bekommen. So wäre es etwa so aussehen:

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

oder

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

Dies ist offensichtlich kein gültiger Code, aber gibt es eine, die tatsächlich tun könnte?

+1

Dies ist nicht möglich. Objekte wissen nicht, welche Variablen sich auf sie beziehen. – Barmar

+1

@Clonkex Er möchte keinen Eigenschaftsnamen, er möchte den Variablennamen. – Barmar

+0

''object'' ist nicht der Name des Objekts. Es ist nur eine Variable, die zufällig das Objekt als Wert hat. Viele Variablen können den gleichen Wert haben, welcher ist ihr "Name"? – Barmar

Antwort

0

Es ist nicht möglich zu tun, was Sie wollen. Allerdings könnte man wie folgt vorgehen:

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]; 
} 

Ausführungsbeispiel:

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); 
} 

Ausgang:

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

All dies Erwägen Sie ES5 verwenden. Mit ES6 können Sie einfach die folgende tun, um eine Liste von Objektnamen und Eigenschaften zu erhalten:

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

Ich hoffe, das hilft Ihnen, in irgendeiner Art und Weise!

0

Gibt es irgendwelche, die das tatsächlich tun könnten?

Nr. var object ist nicht das, was Sie dem Array zuweisen, dessen Inhalt ist, was Sie zugewiesen haben.

var object = { 
    property_1:'value_1' 
} 

var arr = [object] 

ist das gleiche wie:

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

und im zweiten Beispiel object1, object2 und arr [0] alle auf das gleiche Objekt, und das Objekt hat keinen Namen.

Verwandte Themen