gpt4 book ai didi

javascript - 我如何重组这些数据以匹配其原始的未展平形状?

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

我有以下数据模型:

新模式

[
{
name : 'Tony',
id : 'Tony_id'
},{
name: 'Barry',
id: 'Barry_id',
parentId: 'Tony_id'
},{
name: 'George',
id: 'George_id',
parentId: 'Barry_id'
},{
name : 'Laura',
id : 'Laura_id',
parentId: 'Barry_id'
},{
name: 'Edward',
id: 'Edward_id'
},{
name: 'Patrick',
id: 'Patrick_id',
parentId: 'Edward_id'
}
]

所以结构是 parent , child 和孙子。最初模型如下所示,但我不得不将其展平:

旧模型

   [

{
name : 'Tony',
id : 'Tony_id',
children: [
{
name: 'Barry',
id: 'Barry_id',
parentId: 'Tony_id',
children: [
{
name: 'George',
id: 'George_id',
parentId: 'Barry_id'
},{
name : 'Laura',
id : 'Laura_id',
parentId: 'Barry_id'
}
]
}
]
},{
name: 'Edward',
id: 'Edward_id',
children: [
{
name: 'Patrick',
id: 'Patrick_id',
parentId: 'Edward_id'
}
]
}
]

我丢失了对旧模型的任何引用。

仅使用新模型,如何重组它以匹配我的旧模型,展开它?

最佳答案

你可以用一个对象 build 一棵树来保持 parent 和 child 的关系。

此提议也适用于未排序的数据。

var data = [{ name: 'Tony', id: 'Tony_id' }, { name: 'Barry', id: 'Barry_id', parentId: 'Tony_id' }, { name: 'George', id: 'George_id', parentId: 'Barry_id' }, { name: 'Laura', id: 'Laura_id', parentId: 'Barry_id' }, { name: 'Edward', id: 'Edward_id' }, { name: 'Patrick', id: 'Patrick_id', parentId: 'Edward_id' }],
tree = function (data, root) {
var r = [], o = {};
data.forEach(function (a) {
if (o[a.id] && o[a.id].children) {
a.children = o[a.id] && o[a.id].children;
}
o[a.id] = a;
if (a.parentId === root) {
r.push(a);
} else {
o[a.parentId] = o[a.parentId] || {};
o[a.parentId].children = o[a.parentId].children || [];
o[a.parentId].children.push(a);
}
});
return r;
}(data, undefined);

console.log(tree);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 我如何重组这些数据以匹配其原始的未展平形状?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46930698/

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