gpt4 book ai didi

javascript - 将递归数组对象转换为平面数组对象

转载 作者:行者123 更新时间:2023-11-29 18:05:14 25 4
gpt4 key购买 nike

我正在寻找一种方法将这个递归对象数组转换为平面对象数组,以便更容易使用。

[
{
"name": "bill",
"car": "jaguar",
"age": 30,
"profiles": [
{
"name": "stacey",
"car": "lambo",
"age": 23,
"profiles": [
{
"name": "martin",
"car": "lexus",
"age": 34,
"profiles": []
}
]
}
]
}
]

这是预期的输出。

[
{
"name": "bill",
"car": "jaguar",
"age": 30,
},{
"name": "stacey",
"car": "lambo",
"age": 23,
},{
"name": "martin",
"car": "lexus",
"age": 34,
}
]

每个 profiles 数组可以有 n 个项目,这些项目可能有也可能没有子 profiles 的空数组。请注意,转换后的数组对象在转换后不包含 profiles

我愿意使用 underscorelodash 来实现这一点。

最佳答案

我们称您的原始数据为 o,结合 Array.prototype.reduce通过递归,我想到了这个:

o.reduce(function recur(accumulator, curr) {
var keys = Object.keys(curr);
keys.splice(keys.indexOf('profiles'), 1);

accumulator.push(keys.reduce(function (entry, key) {
entry[key] = curr[key];
return entry;
}, {}));

if (curr.profiles.length) {
return accumulator.concat(curr.profiles.reduce(recur, []));
}

return accumulator;
}, []);

关于javascript - 将递归数组对象转换为平面数组对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31829897/

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