获取字符串中返回的对象名称

时间:2017-06-29 00:17:40

标签: javascript arrays

说我有这样的代码:

var object = {
property_1:'value_1'
}

var arr = [object]

我希望能够以字符串形式返回对象名称。所以它看起来像这样:

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

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

这显然不是一个有效的代码,但有没有可以实际做到这一点?

2 个答案:

答案 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]}))

我希望这会以某种方式帮助你!