说我有这样的代码:
var object = {
property_1:'value_1'
}
var arr = [object]
我希望能够以字符串形式返回对象名称。所以它看起来像这样:
arr[0].name /*return 'object'*/
或
arr[0].property_1.objectName /*return 'object'*/
这显然不是一个有效的代码,但有没有可以实际做到这一点?
答案 0 :(得分:0)
有没有可以实际做到这一点?
没有。 var object
不是您分配给数组的内容,它的内容就是您指定的内容。
var object = {
property_1:'value_1'
}
var arr = [object]
与:
相同var object1 = {
property_1:'value_1'
}
var object2 = object1;
arr = [object2];
并且在第二个示例object1中,object2和arr [0]都指向同一个对象,并且该对象没有名称。
答案 1 :(得分: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。 使用ES6,您只需执行以下操作即可获取对象名称和属性列表:
Object.keys(objects).map(key => ({name: key, properties: objects[key]}))
我希望这会以某种方式帮助你!