gpt4 book ai didi

javascript - Lodash Js 使用数组和对象创建树结构

转载 作者:太空宇宙 更新时间:2023-11-04 03:01:54 31 4
gpt4 key购买 nike

我正在尝试创建像数组和对象一样的 Lodash 树。我有两个带有公共(public)键的数组(如类别和产品)。需要形成一个带有字符串索引的树结构。

let categories = [{ 
id: 'c3c70dff-bbdf-8701-81aa-5d60dad9d14f',
category: 'category c227',
},{
id: 'b21a0b57-2a2b-3750-c227-8776cedf707a',
category: 'category 81aa',
}
];
let products = [{
mId: 'b21a0b57-2a2b-3750-c227-8776cedf707a',
pName: 'product 1 c227',
}, {
mId: 'b21a0b57-2a2b-3750-c227-8776cedf707a',
pName: 'product 2 c227',
}, {
mId: 'c3c70dff-bbdf-8701-81aa-5d60dad9d14f',
pName: 'product 1 81aa',
}, {
mId: 'c3c70dff-bbdf-8701-81aa-5d60dad9d14f',
pName: 'product 2 81aa',
},{
mId: 'c3c70dff-bbdf-8701-81aa-5d60dad9d14f',
pName: 'product 3 81aa',
}];

需要这样的结构

[
{
"category": { id, category},
"products ": [
{ mId, pName },
{ mId, pName },
{ mId, pName }
]
},{
"category": { id, category},
"products ": [
{ mId, pName },
{ mId, pName },
{ mId, pName }
]
},
]

我尝试获取该类别的相应产品。但需要帮助才能遵循上述结构。

let arrResult = _.map(categories, function(s) {
console.log(s);
return _.filter(products, function(i) {
return _.isEqual(s.id, i.mId);
});
});

console.log(arrResult);

控制台结果是:

{ id: 'c3c70dff-bbdf-8701-81aa-5d60dad9d14f',
category: 'category c227' }
{ id: 'b21a0b57-2a2b-3750-c227-8776cedf707a',
category: 'category 81aa' }
[ [ { mId: 'c3c70dff-bbdf-8701-81aa-5d60dad9d14f',
pName: 'product 1 81aa' },
{ mId: 'c3c70dff-bbdf-8701-81aa-5d60dad9d14f',
pName: 'product 2 81aa' },
{ mId: 'c3c70dff-bbdf-8701-81aa-5d60dad9d14f',
pName: 'product 3 81aa' } ],
[ { mId: 'b21a0b57-2a2b-3750-c227-8776cedf707a',
pName: 'product 1 c227' },
{ mId: 'b21a0b57-2a2b-3750-c227-8776cedf707a',
pName: 'product 2 c227' } ] ]

最佳答案

您需要将类别对象包装到键category

这个片段应该适合你

let categories = [{
id: 'c3c70dff-bbdf-8701-81aa-5d60dad9d14f',
category: 'category c227',
}, {
id: 'b21a0b57-2a2b-3750-c227-8776cedf707a',
category: 'category 81aa',
}];
let products = [{
mId: 'b21a0b57-2a2b-3750-c227-8776cedf707a',
pName: 'product 1 c227',
}, {
mId: 'b21a0b57-2a2b-3750-c227-8776cedf707a',
pName: 'product 2 c227',
}, {
mId: 'c3c70dff-bbdf-8701-81aa-5d60dad9d14f',
pName: 'product 1 81aa',
}, {
mId: 'c3c70dff-bbdf-8701-81aa-5d60dad9d14f',
pName: 'product 2 81aa',
}, {
mId: 'c3c70dff-bbdf-8701-81aa-5d60dad9d14f',
pName: 'product 3 81aa',
}];


const yourTree = categories.map(cat => {
return {
category: {
id: cat.id,
category: cat.category
},
products: products.filter(product => product.mId === cat.id)
};
});

console.log(yourTree);

关于javascript - Lodash Js 使用数组和对象创建树结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53361816/

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