Javascript 如何从另一个对象创建不同的对象结构
我正在研究如何拍摄形状如下的物体:Javascript 如何从另一个对象创建不同的对象结构,javascript,Javascript,我正在研究如何拍摄形状如下的物体: { "stores": { store: [ { location: { city: "Austin, state: "TX" } } ], [ ... 100 more stores ] } } 我需
{
"stores": {
store: [
{
location: {
city: "Austin,
state: "TX"
}
}
],
[ ... 100 more stores ]
}
}
我需要做的是创建一个新对象,其中存储
将位于顶层,这样我就可以根据需要塑造它,而不是塑造存储
{
"store": [
{
city: "Austin",
state: "TX"
},
{
city: "San Francisco",
state: "CA"
},
{ ... 100 more }
]
}
从第一个对象创建一个新对象,并能够获得第二个级别并使其成为第一个级别的最佳方法是什么?我是否必须创建一个新对象,还是可以只操纵第一个对象
如何在不增加维护难度的情况下,用最少的代码实现这一点
为什么要使用该方法来塑造新对象
感谢您在理解处理此任务的过程中提供的帮助
我的最终输出需要如下所示:
{
company: "ABC",
companyId: 1234,
nasdaq: ABCND,
store: [], // this is where I will have all the objects stores in array
employees: 1000000
}
我的希望是,这将使我更清楚地了解我试图做什么,采取第一个和塑造它看起来像第二个
注意
在评论中进行讨论后,该问题应关闭,因为该问题缺乏明确性,以及该问题如何令人困惑。我的希望是它不是封闭的,而是作为一个参考,如何不提出这样的问题
object.stores
将为您提供二级对象
你不需要“创建一个新的对象”,或“创建一个不同的对象结构”,或“操纵一个对象”,或“使第二层成为第一层”;只需引用所需的子对象,如中所示
{
company: "ABC",
companyId: 1234,
nasdaq: ABCND,
store: object.stores, // this is where I will have all the objects stores in array
employees: 1000000
}
假设你有这样一个结构
{
stores: {
store1: [{ location: { city: "Austin", state: "TX" } }],
store2: [{ location: { /* ... */ } }],
}
}
你可以用数组连接所有的内部对象
var object={stores:{store1:[{location:{城市:“奥斯汀”,州:“德克萨斯州”}}],store2:[{location:{城市:“奥斯汀”,州:“德克萨斯州”},{location:{城市:“旧金山”,州:“加利福尼亚州”}}},
平面={
存储:Object.keys(Object.stores).reduce(函数(r,k){
返回r.concat(object.stores[k]);
}, [])
};
控制台。原木(平)代码>
。作为控制台包装{最大高度:100%!重要;顶部:0;}
使用上面的代码,您将创建对已存在的store
对象数组的新引用。添加实际数据和代码。这就是实际数据。它的形式不对吗?这就是我需要改变的响应返回方式。我所知道的唯一一个过程是使用Object.create()
,但即使这样,我也不知道怎么做。你确定你在的“存储区”中有有效的对象:“[store:[…]]
?你确定你给出了正确的格式吗?因为您有一个数组stores
,它将store
作为键。let stores=storeObject.stores.store
将为您提供所有存储
对象的集合。因此,我不必创建新对象,而只需创建对第二级的引用?@pertrai1是的,但要知道,如果您编辑引用,它也会编辑原始对象。所以这取决于你是否介意改变原始对象他需要一个存储数组而不是多个存储数组根据他的问题我们将有多个存储arrays@RahulSingh这是正确的,只是一个存储阵列,其中有许多对象。只有一个商店,有许多具有属性的对象,我只添加了一些,这样我就不会占用空间了post@pertrai1你能在商店里加上ore商店吗?它会更清晰,因为我们不能有重复的钥匙。这对我来说是一个有帮助的开始。你能看看修改后的版本吗?因为我不小心在第一个对象中有一个多键。只有一个位置。我真的需要更多的数据,这些数据与原始数据和想要的输出相匹配。事实上他们不匹配。不用担心,尼娜,我发现我问这个问题的方式很混乱,很抱歉占用了你的时间。
let allStores = storesObject.stores.store;