我所拥有的
{
"1zkhj45kjb3h3jj27777fjd": {"-L7hgtdyYUYY56":{ email: "abc@gmail.com",name:"abc" } },
"1zkhj45kjb3h898fj7fjddk": {"-L7hgtdyYUYY56":{ email: "dumy@gmail.com",name:"dumy" } }
}
我所做的
const snapshot = snap.val()
const items = Object.values(snapshot)
现在items
看起来像
[
{"-L7hgtdyYUYY56":{ email: "abc@gmail.com",name:"abc" } },
{"-L7hgtdyYUYY56":{ email: "dumy@gmail.com",name:"dumy" } }
]
但是我想要
[
{ email: "abc@gmail.com",name:"abc" } ,
{ email: "dumy@gmail.com",name:"dumy" }
]
我尝试了所有其他策略,例如Object.keys
,Object.enteries
。
如果我再次致电object.values
,则会得到相同的结果。
如何使用javascript? 我是新手,以响应本机和JavaScript。
谢谢!
答案 0 :(得分:4)
将Array.flatMap()
与Object.values()
一起使用以获取内部对象的数组:
const items = {
"1zkhj45kjb3h3jj27777fjd": {"-L7hgtdyYUYY56":{ email: "abc@gmail.com",name:"abc" } },
"1zkhj45kjb3h898fj7fjddk": {"-L7hgtdyYUYY56":{ email: "dumy@gmail.com",name:"dumy" } }
}
const result = Object.values(items).flatMap(Object.values)
console.log(result)
如果不支持Array.flatMap()
,请改用Array.map()
。但是,结果将是一个数组数组,因此您需要对其进行展平。您可以通过将数组的数组散布到Array.concat()
中来使其变平:
const items = {
"1zkhj45kjb3h3jj27777fjd": {"-L7hgtdyYUYY56":{ email: "abc@gmail.com",name:"abc" } },
"1zkhj45kjb3h898fj7fjddk": {"-L7hgtdyYUYY56":{ email: "dumy@gmail.com",name:"dumy" } }
}
const result = [].concat(...Object.values(items).map(Object.values))
console.log(result)
答案 1 :(得分:3)
将Object.values()
和map()
两次使用flat()
:
const data = {
"1zkhj45kjb3h3jj27777fjd": {"-L7hgtdyYUYY56":{ email: "abc@gmail.com",name:"abc" } },
"1zkhj45kjb3h898fj7fjddk": {"-L7hgtdyYUYY56":{ email: "dumy@gmail.com",name:"dumy" } }
};
const result = Object.values(data).map(Object.values).flat();
console.log(result);
答案 2 :(得分:1)
使用Object.values()
获取嵌套对象作为数组,然后使用.map()
获取每个对象的-L7hgtdyYUYY56
的值。
const snapshot = {
"1zkhj45kjb3h3jj27777fjd": {"-L7hgtdyYUYY56":{ email: "abc@gmail.com",name:"abc" } },
"1zkhj45kjb3h898fj7fjddk": {"-L7hgtdyYUYY56":{ email: "dumy@gmail.com",name:"dumy" } }
};
var result = Object.values(snapshot).map(e => e["-L7hgtdyYUYY56"]);
console.log(result);
这假定嵌套对象只有一个属性,并且它们都是相同的属性名,如您的示例所示。如果它更具动态性,则使对象变平的其他答案更合适。