gpt4 book ai didi

javascript - 使用 Javascript 在嵌套对象中创建对象数组

转载 作者:行者123 更新时间:2023-11-30 12:18:46 26 4
gpt4 key购买 nike

给定以下 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]);
}

我正在努力使其递归。

编辑我想它需要包装在一个可以调用自身的函数中,以便它可以递归。

最佳答案

这是一个不需要知道 key 的解决方案,假设您要转换所有其他级别的嵌套:

function toArrayOfObjects(obj) {
var collection = [];
for (key in obj) {
var value = obj[key];
if (typeof value === 'object' && !Array.isArray(value)) {
var childObj = {};
for (childKey in value) {
var childValue = value[childKey];
if (typeof childValue === 'object' && !Array.isArray(childValue)) {
childObj[childKey] = toArrayOfObjects(childValue);
} else {
childObj[childKey] = childValue;
}
}
collection.push(childObj);
} else {
collection.push(value);
}
}
return collection;
}

关于javascript - 使用 Javascript 在嵌套对象中创建对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31667660/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com