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

问题描述 投票:2回答:3

我有什么

{
     "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做出反应。

谢谢!

javascript arrays react-native javascript-objects
3个回答
4
投票

使用Object.enteriesobject.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()

3
投票

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


1
投票

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

这假定嵌套对象只有一个属性,并且它们都是相同的属性名称,如示例所示。如果它更具动态性,那么压平对象的其他答案更合适。

© www.soinside.com 2019 - 2024. All rights reserved.