gpt4 book ai didi

javascript - 获取对象属性名称作为字符串

转载 作者:IT王子 更新时间:2023-10-29 03:06:21 25 4
gpt4 key购买 nike

是否可以将对象属性名作为字符串获取

person = {};
person.first_name = 'Jack';
person.last_name = 'Trades';
person.address = {};
person.address.street = 'Factory 1';
person.address.country = 'USA';

我想像这样使用它:

var pn = propName( person.address.country ); // should return 'country' or 'person.address.country'
var pn = propName( person.first_name ); // should return 'first_name' or 'person.first_name'

注意:这段代码正是我要找的。我知道这听起来甚至很愚蠢,但事实并非如此。

这就是我想用它做的。

HTML

person = {};
person.id_first_name = 'Jack';
person.id_last_name = 'Trades';
person.address = {};
person.address.id_address = 'Factory 1';
person.address.id_country = 'USA';


extPort.postMessage
(
{
message : MSG_ACTION,
propName( person.first_name ): person.first_name
}
};

--------------------回答---------------- ------

感谢 ibu。他指出了正确的方法,我使用了递归函数

var res = '';

function propName(prop, value) {
for (var i in prop) {
if (typeof prop[i] == 'object') {
if (propName(prop[i], value)) {
return res;
}
} else {
if (prop[i] == value) {
res = i;
return res;
}
}
}
return undefined;
}

var pn = propName(person, person.first_name); // returns 'first_name'
var pn = propName(person, person.address.country); // returns 'country'

演示:http://jsbin.com/iyabal/1/edit

最佳答案

我知道使用 Object.keys(your_object) 的最佳实践.它将为您解析为数组属性名称。示例:

var person = { firstName: 'John', lastName: 'Cena', age: '30' };
var listPropertyNames = Object.keys(person); //["firstName", "lastName", "age"]

希望这个例子对你有用。

关于javascript - 获取对象属性名称作为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13612006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com