Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取以字符串形式返回的对象名称_Javascript_Arrays - Fatal编程技术网

Javascript 获取以字符串形式返回的对象名称

Javascript 获取以字符串形式返回的对象名称,javascript,arrays,Javascript,Arrays,假设我有这样一个代码: var object = { property_1:'value_1' } var arr = [object] arr[0].name /*return 'object'*/ 我希望能够获取以字符串形式返回的对象名称。所以它看起来像这样: var object = { property_1:'value_1' } var arr = [object] arr[0].name /*return 'object'*/ 或 这显然不是一个有效的代码

假设我有这样一个代码:

var object = {
property_1:'value_1'
}

var arr = [object]
arr[0].name     /*return 'object'*/
我希望能够获取以字符串形式返回的对象名称。所以它看起来像这样:

var object = {
property_1:'value_1'
}

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


这显然不是一个有效的代码,但是有没有真正能够做到这一点的代码?

有没有真正能够做到这一点的代码?

否。
var对象
不是您分配给数组的内容,它的内容是您分配给数组的内容

var object = {
    property_1:'value_1'
}

var arr = [object]
同:

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

在第二个示例中,object1、object2和arr[0]都指向同一个对象,而该对象没有名称。

是否有任何方法可以做到这一点?

否。
var对象
不是您分配给数组的内容,它的内容是您分配给数组的内容

var object = {
    property_1:'value_1'
}

var arr = [object]
同:

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

在第二个示例中,object1、object2和arr[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);
}
所有这些都是考虑到您正在使用ES5。 使用ES6,您只需执行以下操作即可获得对象名称和属性的列表:

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

我希望这对你有所帮助

不可能做你想做的事。但是,您可以执行以下操作:

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);
}
所有这些都是考虑到您正在使用ES5。 使用ES6,您只需执行以下操作即可获得对象名称和属性的列表:

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

我希望这对你有所帮助

这是不可能的。对象不知道哪些变量引用它们。@Clonkex他不需要属性名,他需要变量名。
'object'
不是对象名。它只是一个变量,碰巧有对象作为它的值。许多变量可以有相同的值,哪一个是它的“名称”?@Barmar哦,是的,我对我的标志太仓促了。不知道我是否能收回它。哦,等等,是的,我可以,收回。@Barmar这个名字没有意义。我使用.name作为理论上的内置属性,返回对象名称以明确我想要的内容。这是不可能的。对象不知道哪些变量引用它们。@Clonkex他不需要属性名,他需要变量名。
'object'
不是对象名。它只是一个变量,碰巧有对象作为它的值。许多变量可以有相同的值,哪一个是它的“名称”?@Barmar哦,是的,我对我的标志太仓促了。不知道我是否能收回它。哦,等等,是的,我可以,收回。@Barmar这个名字没有意义。我使用.name作为理论上的内置属性,返回对象名称以明确我想要的内容。