我有什么
{
"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。
谢谢!
使用 Object.values()
使用 Array.flatMap()
获取内在对象的数组:
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)
使用map()
和flat()
两次使用Object.values()
:
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);
使用 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);
这假设嵌套对象只有一个属性,它们都是与您的示例相同的属性名称。如果是动态的,则更扁平对象的其他答案更合适。