Tengo dos modelos para Categoría y subcategoría.
El modelo de categoría devuelve una matriz de datos como
category = [ {_id: '1', name: 'Appliances', slug: 'appliances'}, {_id: '2', name: 'Computer', slug: 'computer'}, {_id: '3', name: 'Phones', slug: 'phones'}, ]El modelo de subcategoría devuelve
subcategory = [ { _id: '101', name: 'fridge', category: '1'}, {_id: '102', name: 'Radio', category: '1'}, {_id: '103', name: 'Apple', category: '3'}, {_id: '105', name: 'Toshiba', category: '2'}, {_id: '109', name: 'HP', category: '2'}, ]Quiero devolver algo que se vea así:
[ {_id: '1', name: 'Appliances, subCategories: [ { _id: '101', name: 'fridge', category: '1'}, {_id: '102', name: 'Radio', category: '1'}, ] }, {_id: '2', name: 'Computer, subCategories: [ {_id: '105', name: 'Toshiba', category: '2'}, {_id: '109', name: 'HP', category: '2'}, ] }, {_id: '3', name: 'Computer, subCategories: [ {_id: '103', name: 'Apple', category: '3'}, ] } ]Aquí está el código que tengo hasta ahora
const [categories, setCategories] = useState([]) const [subCategories, setSubCategories] = useState([]) useEffect(() => { loadSubCategories() }, []) const loadSubCategories = async () => { const res = await getAllSubCategories() setCategories(res.subCategory) setTotal(res.length) } const getAllSubCategories = () => { return request('/subCategories', { method: 'GET', }) } Esto solo carga mis subcategorías aunque. mi ruta de categoría es /categories
category = [ {_id: '1', name: 'Appliances', slug: 'appliances'}, {_id: '2', name: 'Computer', slug: 'computer'}, {_id: '3', name: 'Phones', slug: 'phones'}, ] subcategory = [ { _id: '101', name: 'fridge', category: '1'}, {_id: '102', name: 'Radio', category: '1'}, {_id: '103', name: 'Apple', category: '3'}, {_id: '105', name: 'Toshiba', category: '2'}, {_id: '109', name: 'HP', category: '2'}, ] const result = category.map(e => { e.subCategories = subcategory.filter(a => a.category == e._id); return e; }) console.log(result);const category = [ {_id: '1', name: 'Appliances', slug: 'appliances'}, {_id: '2', name: 'Computer', slug: 'computer'}, {_id: '3', name: 'Phones', slug: 'phones'}, ]; const subcategory = [ { _id: '101', name: 'fridge', category: '1'}, {_id: '102', name: 'Radio', category: '1'}, {_id: '103', name: 'Apple', category: '3'}, {_id: '105', name: 'Toshiba', category: '2'}, {_id: '109', name: 'HP', category: '2'}, ]; const newCategoryArray = category.map(v => { const sub = []; subcategory.forEach(i => { if(i.category === v._id){ sub.push(i); } }) v.subcategory = sub; return v; });