我在内存中有一个如下所示的对象:
let data = {
12353: {
CurrentNumbers: {
jiewfh7ahdk8: 14,
eiefhsdoowen: 24,
jaweufwvnw83: 54
},
14324: {
CurrentNumbers: {
jiewfr7ahdk8: 16,
eiefhsdsfsdf: 44,
asgrega4ffef: 14
},
}
我尝试使用forEach
对象上的data
进行迭代,并获取父密钥(12353
或14324
),如下所示:< / p>
data.forEach(values => {
let parentKey = ?? //I tried Object.keys(values) but it gives me CurrentNumbers
}
有没有办法让钥匙达到一级?
答案 0 :(得分:3)
您无法forEach
覆盖对象,因为没有Object.prototype.forEach
。相反,您可以使用for...in
loop来迭代对象的属性。根据MDN文档的链接:
for...in
语句以任意顺序迭代对象的可枚举属性。对于每个不同的属性,可以执行语句。
因此,使用它,我们可以迭代属性12353
和14324
:
let data = {
12353: {
CurrentNumbers: {
jiewfh7ahdk8: 14,
eiefhsdoowen: 24,
jaweufwvnw83: 54
}
},
14324: {
CurrentNumbers: {
jiewfr7ahdk8: 16,
eiefhsdsfsdf: 44,
asgrega4ffef: 14
}
}
}
for(let x in data) {
console.log(x);
}
你的对象文字有一些括号问题。上面的代码是固定的
上述代码使用for...in
循环来遍历data
的属性并将其存储到x
中。打印后,会记录属性12353
和14324
。
如@mplungjan所述,您甚至可以这样做:
console.log(Object.keys(data))
这样做是使用Object.keys(data)
返回data
可枚举属性数组12353
和14324
。请注意,返回的数组将属性存储为字符串。
答案 1 :(得分:1)
虽然安德鲁已经回答了问题,但如果您只想检索可以放置的物体的钥匙,
let data = {
12353: {
CurrentNumbers: {
jiewfh7ahdk8: 14,
eiefhsdoowen: 24,
jaweufwvnw83: 54
}
},
14324: {
CurrentNumbers: {
jiewfr7ahdk8: 16,
eiefhsdsfsdf: 44,
asgrega4ffef: 14
}
}
};
console.log(Object.keys(data));
underscore.js
并获取以下密钥,
let data = {
12353: {
CurrentNumbers: {
jiewfh7ahdk8: 14,
eiefhsdoowen: 24,
jaweufwvnw83: 54
}
},
14324: {
CurrentNumbers: {
jiewfr7ahdk8: 16,
eiefhsdsfsdf: 44,
asgrega4ffef: 14
}
}
};
console.log(_.keys(data));
<强> DEMO 强>