我想根据WP类别/子类别生成一个对象对象,这些对象也包含对象



我一直在与WP REST Api合作,将应用程序迁移到无头WP+react应用程序,并在WP如何显示Cats和SubCats方面遇到了一些问题。

我的想法是获得所有当前类别,并基于父亲类别生成的子类别,这些子类别也可以获得子类别,因为WP猫子类别结构是无限的。

Category { SubCategory { SubCategory {infinite}}}

我一直在尝试生成一个包含这些信息的新对象,并以不同的方式进行迭代,比如推送一个"parentId"等于父亲ID的对象,但总是没有定义。

我目前的逻辑是这样的:

const fatherCategories = categories.filter((item) => (
item.parent === 0
))
const subCategories = categories.filter((item) => (
item.parent !== 0
))
const subCategories = subCats.forEach((category) => (
subCats.filter((item) => (
category.id === item.parent
))
))

我100%认为这不是我实现目标所需要的方式,但我的知识到此为止,无法找到任何解决这个问题的方法,如果我知道子类别的长度,我会走另一条路,但如果没有这些数据,我会被阻止。

正如我之前的评论所说,这样的东西应该对你有用:

function isParent(category) {
return category.parent === 0;
}
function findAllchildren(allCategories, currentCategory) {
// const allCategories.filter()
const currCatChildren = allCategories.filter(
(c) => c.parent === currentCategory.id
);
if (currCatChildren.length) {
currCatChildren.forEach((c) => {
c.children = findAllchildren(allCategories, c);
});
}
return currCatChildren;
}
const categories = [
{ id: 1, parent: 0, name: "pc -> 1" },
{ id: 2, parent: 0, name: "pc -> 2" },
{ id: 3, parent: 1, name: "cc -> 3>1" },
{ id: 4, parent: 2, name: "cc -> 4>2" },
{ id: 5, parent: 3, name: "cc -> 5>3" },
{ id: 6, parent: 4, name: "cc -> 6>4>1" },
{ id: 7, parent: 5, name: "cc -> 7>5>3>1" },
];
const finalCategoryTree = categories.filter(isParent).map((parentCategory) => {
const tmp = { ...parentCategory };
tmp.children = findAllchildren(categories, parentCategory);
return tmp;
});
console.log(JSON.stringify(finalCategoryTree));

最新更新