我希望将JSON / JavaScript对象的密钥名称作为字符串。也许这很容易,但我无法弄清楚。
我有这个对象(简化示例,有理由将键命名为字符串):
var obj = {
"input1": {
"type": "input",
"value": "aaa"
},
"input2": {
"type": "checkbox",
"value": "bbb"
}
}
现在我想做这样的事情:
currentInputName = getTheNameOfThisAsString(obj.input1);
console.log(currentInputName); // output should be "input1"
currentInputName = getTheNameOfThisAsString(obj.input2);
console.log(currentInputName); // now output should be "input2"
我尝试使用Object.keys()
和Object.getOwnPropertyNames()
,但两者都返回type
和value
给我,因此他们输出指定对象的键,而不是对象名称本身。
答案 0 :(得分:1)
使用Object.keys()
访问对象的密钥。
var obj = { "input1": { "type": "input", "value": "aaa" }, "input2": { "type": "checkbox", "value": "bbb" } };
var keys = Object.keys(obj);
console.log(keys);

答案 1 :(得分:0)
我不确定你要完成什么,但我认为你不知道密钥,因此你将object.key发送给你的方法。
如何更改方法以将对象和object.key作为参数?
您可以这样调用您的方法:getTheNameOfThisAsString(obj, obj.input1);
function getTheNameOfThisAsString(obj, subObject){
var keys = Object.keys(obj);
for(var key in keys){
if(subObject.value == obj[key].value){
return key;
}
}
}
答案 2 :(得分:0)
根据您的评论,我想知道您是否可以存储您的子对象:currItem=obj["input1"]
,如果是这种情况,您已经将密钥作为字符串,并且不需要显式方法
以下是一个例子:
var currItemName = "input1";
var currItem=obj[currItemName];