Javascript / JSON:将指定对象的名称作为字符串

时间:2018-01-10 11:14:58

标签: javascript json

我希望将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(),但两者都返回typevalue给我,因此他们输出指定对象的键,而不是对象名称本身。

3 个答案:

答案 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];