在将此标记为重复之前,我花了很多时间查看类似的问题,大部分答案都没有解决我的情况。
我有一个巨大的项目列表作为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)中),没有成功
我仔细检查了愚蠢的语法错误和所有类型。
要想回答这个问题会很好:
TL; DR。我只想获取当前正在处理的对象的父键名
答案 0 :(得分:0)
["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" ...]