获取Object项的Key name

时间:2017-07-02 00:26:29

标签: javascript ecma

在将此标记为重复之前,我花了很多时间查看类似的问题,大部分答案都没有解决我的情况。

我有一个巨大的项目列表作为ID的对象。像这样,在Map(userDB)

  {
    "15321":{name:"name1",status:"status1"},modules:{...},
    "15322":{name:"name1",status:"status1"},modules:{...},
    "15323":{name:"name1",status:"status1"},modules:{...}
   }

现在我需要进行一项操作,其中我需要所有这些ID,在这种情况下,它是每个项目的关键名称。我需要得到这些“15321”,“15322”等。

更具体地说,我想要一些我可以获取的东西,比如

  userDB.forEach( u => {

  //something here to get u's key

  })

我尝试过Object.keys(),但它会返回一个ID列表作为对象

{“15321”,“15322”......}我仍然无法抓住ID字符串

我也试过(我在Object.keys(userDB)中),没有成功

我仔细检查了愚蠢的语法错误和所有类型。

要想回答这个问题会很好:

  • 不要试图向我展示一种存储东西的新方法,它已经存储,所以你不会有所帮助
  • 结果应该是作为字符串的ID,即密钥的名称。
  • 不要问“我为什么要这样做”。只是回答,不要试图改变这种情况。因为这是我在大多数其他类似问题中看到的,而这正是让我每次都走进圈子的原因。

TL; DR。我只想获取当前正在处理的对象的父键名

2 个答案:

答案 0 :(得分:0)

你可能会感到困惑。 Object.keys(obj)返回一个数组。在您的情况下,它看起来像这样:["15321", "15322", "15323"]。您可以像这样遍历该数组,并且您将拥有密钥和对象,并且无论您想要什么,您都可以使用它们。下面是一个for循环,它将键作为名为“key”的键附加到对象。

var keys = Object.keys(myObject);

for(var i = 0; i < keys.length; i++){
    var key = keys[i]; // this is your key
    var obj = myObject[key]; // this is the key's value
    obj.key = key;
}

编辑

在javascript中,Array也是一个对象,但可以说“键”通常是数字而不是字符串。所以一个看起来像这样的数组: ["Hello", "there"]基本上表示如下:{ 0 : "Hello", 1 : "there" } 当在数组上使用for-in时,它将遍历键,但这些键将是0,1,2 ......而不是项本​​身。

答案 1 :(得分:0)

Object.keys(obj)将返回一个数组。 但是在您的数据中除了ID之外还有另一个键modules。 所以你可以用这个:

 var keys = Object.keys(data);
 keys.pop();

 console.log(keys);     // ["15321", "15322", "15323" ...]