【发布时间】:2015-10-18 11:57:54
【问题描述】:
给定以下 javascript 对象结构,通常是 firebase 返回的内容
var data = {
'id1' : {
'fname' : 'value',
'lname' : 'value',
'things' : {
'thing1' : {
'brand' : 'value',
'name' : 'value'
},
'thing2' : {
'brand' : 'value',
'name' : 'value'
},
'thing3' : {
'brand' : 'value',
'name' : 'value'
}
}
},
'id2' : {
'fname' : 'value',
'lname' : 'value',
'things' : {
'thing1' : {
'brand' : 'value',
'name' : 'value'
},
'thing2' : {
'brand' : 'value',
'name' : 'value'
},
'thing3' : {
'brand' : 'value',
'name' : 'value'
}
}
}
};
你会怎样把它转换成
[
{
'fname' : 'value',
'lname' : 'value,
'things' : [
{
'brand' : 'value',
'name' : 'value'
},
{
'brand' : 'value',
'name' : 'value'
},
{
'brand' : 'value',
'name' : 'value'
}
]
},
{
'fname' : 'value',
'lname' : 'value,
'things' : [
{
'brand' : 'value',
'name' : 'value'
},
{
'brand' : 'value',
'name' : 'value'
},
{
'brand' : 'value',
'name' : 'value'
}
]
}
]
请记住,嵌套对象可能比这更深。将嵌套结构转换为数组的实现有很多,但我还没有看到有人进行这种特定的转换。我一直在绞尽脑汁,只是非常接近,但还没有做到恰到好处。
我已经有了这段代码,它对像“事物”这样的更深层次的对象没有任何作用。
var collection = [];
for(key in data) {
collection.push(data[key]);
}
我正在努力使其递归。
编辑 我想它需要被包裹在一个可以调用自身的函数中,以便它可以递归。
【问题讨论】:
-
@FrankvanPuffelen 这不是那个的副本。我已经有了那个代码。我正在寻找它更深入并迭代对象的所有级别。您链接到的问题和答案正是我已经在做的事情。
-
关闭投票已撤回,请在下方回答。
-
键名是否应该表明数组排序?例如(id1,id2 / thing1 thing2)如果是这样,规则是什么?
-
@LukeP 键不表示订购。该对象在设置为数据变量之前在服务器上排序。
标签: javascript