我有什么
{
"1zkhj45kjb3h3jj27777fjd": {"-L7hgtdyYUYY56":{ email: "[email protected]",name:"abc" } },
"1zkhj45kjb3h898fj7fjddk": {"-L7hgtdyYUYY56":{ email: "[email protected]",name:"dumy" } }
}
我做了什么
const snapshot = snap.val()
const items = Object.values(snapshot)
现在items
看起来像
[
{"-L7hgtdyYUYY56":{ email: "[email protected]",name:"abc" } },
{"-L7hgtdyYUYY56":{ email: "[email protected]",name:"dumy" } }
]
但我想要
[
{ email: "[email protected]",name:"abc" } ,
{ email: "[email protected]",name:"dumy" }
]
我已经尝试过所有其他策略,如qazxsw poi,qazxsw poi。如果我再次打电话给Object.keys
它给出相同的结果。
怎么做javascript?我是新手,对原生和javascript做出反应。
谢谢!
使用Object.enteries
和object.values
获取内部对象的数组:
如果不支持Object.values()
,请改用const items = {
"1zkhj45kjb3h3jj27777fjd": {"-L7hgtdyYUYY56":{ email: "[email protected]",name:"abc" } },
"1zkhj45kjb3h898fj7fjddk": {"-L7hgtdyYUYY56":{ email: "[email protected]",name:"dumy" } }
}
const result = Object.values(items).flatMap(Object.values)
console.log(result)
。但是,结果将是一个数组数组,因此您需要将其展平。您可以通过将数组数组扩展到Array.flatMap()
来展平它:
Array.map()
使用Array.concat()
两次使用const items = {
"1zkhj45kjb3h3jj27777fjd": {"-L7hgtdyYUYY56":{ email: "[email protected]",name:"abc" } },
"1zkhj45kjb3h898fj7fjddk": {"-L7hgtdyYUYY56":{ email: "[email protected]",name:"dumy" } }
}
const result = [].concat(...Object.values(items).map(Object.values))
console.log(result)
和Object.values()
:
使用flat()
将嵌套对象作为数组,然后使用const data = {
"1zkhj45kjb3h3jj27777fjd": {"-L7hgtdyYUYY56":{ email: "[email protected]",name:"abc" } },
"1zkhj45kjb3h898fj7fjddk": {"-L7hgtdyYUYY56":{ email: "[email protected]",name:"dumy" } }
};
const result = Object.values(data).map(Object.values).flat();
console.log(result);
获取每个对象的Object.values()
的值。
.map()
这假定嵌套对象只有一个属性,并且它们都是相同的属性名称,如示例所示。如果它更具动态性,那么压平对象的其他答案更合适。