Tengo una lista de elementos como los siguientes datos
[ { "title": "First", "catalogCategories": [ "sport", "economy" ] }, { "title": "Second", "catalogCategories": [ "politics", "tourism" ] }, { "title": "Third", "catalogCategories": [ "sport", "universe" ] }, { "title": "Fourth", "catalogCategories": [ "economy", "politics" ] } ] Estoy comprobando cada elemento de la lista si existe la matriz catalogCategories y, si existe, inserto en una matriz catalogData la categoría de cualquier elemento solo una vez, porque sucede que la categoría para cualquier elemento puede ser la misma, estoy filtrando la matriz catalogData todas las categorías de los elementos en catalogCategories
Este es el siguiente código
let categoryData = []; let isCategory = false for (let product of list) { if (product.catalogCategories[0].length > 0) { isCategory = true let isFound = false for (let i = 0; i < categoryData.length; i++) { if (categoryData[i].value === product.catalogCategories[0] || categoryData[i].value === product.catalogCategories[1] ) { isFound = true; } } if (!isFound) { categoryData.push({"name": "catalogCategories", "label": product.catalogCategories[0], "selected": false, "value": product.catalogCategories[0]}) } }mi problema esta aqui
if (!isFound) { categoryData.push({"name": "catalogCategories", "label": product.catalogCategories[0], "selected": false, "value": product.catalogCategories[0]}) } Como puede ver, siempre solo presiono el primer elemento de catalogCategories después de todas estas comprobaciones, ¿cómo puedo anotar que dinámicamente puedo presionar el primero y/o el segundo?
"value": product.catalogCategories[0] "label": product.catalogCategories[0]Primero debe verificar las categorías de catalogCategories completas, no solo el primer elemento product.catalogCategories[0] mediante el uso de un map y usar un new Map para realizar un seguimiento de las categorías no duplicadas.
const list = [ { "title": "First", "catalogCategories": [ "sport", "economy" ] }, { "title": "Second", "catalogCategories": [ "politics", "tourism" ] }, { "title": "Third", "catalogCategories": [ "sport", "universe" ] }, { "title": "Fourth", "catalogCategories": [ "economy", "politics" ] } ] let categoryDataMap = new Map(); for (let product of list) { if (product.catalogCategories.length > 0) { product.catalogCategories.map(catalog=>{ if(!categoryDataMap.has(catalog)){ categoryDataMap.set(catalog,{"name": "catalogCategories", "label": catalog, "selected": false, "value": catalog}) } }) } } const categoryData = Array.from(categoryDataMap.values()) console.log(categoryData)