gpt4 book ai didi

javascript - 根据对象中的数据对对象数组进行排序,并嵌套它们

转载 作者:行者123 更新时间:2023-12-03 11:34:49 25 4
gpt4 key购买 nike

我正在尝试获取这个对象数组:

var channels = [{
cid: 5,
pid: 10
},
{
cid: 10,
pid: 0
},
{
cid: 20,
pid: 5
},
{
cid: 15,
pid: 10
}];

cid = channel ID,pid = 父 channel ID。

我需要将 channel 分组到其父 channel 下,但是,这些 channel 也可以是父 channel 。如何将它们递归分组,如下所示?:

var data = [{
cid: 10,
pid: 0,
sub_channels: [{
cid: 5,
pid: 10,
sub_channels: [{
cid: 20,
pid: 5
}]
},
{
cid: 15,
pid: 10
}];
}];

我正在使用 NodeJS,因此我非常乐意尝试任何模块或 javascript 库来使其正常工作。

最佳答案

就是这样,它只需要对集合进行 3 次循环。

var _ = require('lodash')

var channels = [
{
cid: 5,
pid: 10
},
{
cid: 10,
pid: 0
},
{
cid: 20,
pid: 5
},
{
cid: 15,
pid: 10
}
];

var map = {}
, parented = {}

_(channels)
.each(function (channel) {
map[channel.cid] = channel;
})
.each(function (channel) {
var parent = map[channel.pid]
if (!parent) return
if (!parent.sub_channels) parent.sub_channels = []

parent.sub_channels.push(channel)
parented[channel.cid] = channel
})

var result = _.filter(map, function (channel) {
return !parented[channel.cid]
})

console.log(JSON.stringify(result, null, 2))

关于javascript - 根据对象中的数据对对象数组进行排序,并嵌套它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26562632/

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