0

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

我有一个庞大的项目列表作为 ID 的对象。像这样,在地图(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;博士。我只想获取当前正在处理的对象的父键名

4

2 回答 2

0

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

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中,数组也是一个对象,但是可以说“键”通常是数字而不是字符串。所以一个看起来像这样的数组: ["Hello", "there"]本质上是这样表示的:{ 0 : "Hello", 1 : "there" } 当在数组上使用 for-in 时,它会遍历键,但这些键将是 0、1、2... 而不是项目本身。

于 2017-07-02T00:41:56.327 回答
0

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

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

 console.log(keys);     // ["15321", "15322", "15323" ...]
于 2017-07-02T00:48:14.060 回答