javascript - 具有多个内部对象的数组,提取更深的内部对象作为数组

标签 javascript arrays react-native javascript-objects

我有什么

{
     "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.keysObject.enteries。 如果我再次调用 object.values,它会给出相同的结果。

JavaScript 怎么做? 我是对 native 和 javascript 使用react的新手。

谢谢!

最佳答案

使用 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)

关于javascript - 具有多个内部对象的数组,提取更深的内部对象作为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55081738/

相关文章:

javascript - 在 .js 文件中设置变量

java - 将字符串添加到另一个类的数组列表中

reactjs - 使用 react 导航渲染抽屉式导航和选项卡式导航

react-native - React Native 博览会-facebook : Error ‘Given URL is not allowed by the Application Configuration.’

android - 包签名与之前安装的版本不匹配

javascript - 使用按钮在页面上注入(inject) .css 文件

javascript - 什么是窗口加载替代方案?

php - 缓存通过 PHP/AJAX/JSON/jQuery 加载的动态图像

javascript - 添加到 React 中的数组

java - ArrayList java用作数组