Estoy devolviendo categorías de productos en función de los resultados de búsqueda y quiero enumerar todas las categorías de productos como una sola lista con los duplicados filtrados. Actualmente, estoy devolviendo algo como:
item.productCategoriesque devuelve una cadena de URLS, así:
"<a href=\"https://test.local/product-category/guitar-pickups/\" rel=\"tag\">Guitar Pickups</a>, <a href=\"https://test.local/product-category/hum-cancelling/\" rel=\"tag\">Hum-Cancelling Pickups</a> Luego los dividiré usando .split(",") y la siguiente expresión a continuación para enumerarlos en un literal de plantilla:
`<ul> ${results["products"].map((item) => ` <li class="search-result">${item.productCategories .split(",") .map((category) => `<li>${category}</li>`) .join("")} </li>`)} </ul>`Obtengo listas separadas de categorías así:
Lista 1:
Lista 2:
Me gustaría aplanar todas estas matrices, combinarlas en una matriz y luego filtrar los duplicados y devolver una sola matriz. No sé por dónde empezar a hacer esto en una Plantilla Literal. ¿Algunas ideas?
Gracias a @Bergi, ahora puedo reducir todos los enlaces a una nueva matriz, pero estoy atascado deduplicando la matriz.
Código actualizado:
<ul>${results.products.flatMap((item) => item.productCategories.split(", "))}</ul> <ul>${results.products.flatMap((item) => item.productCategories.split(", ")).map((cat) => console.log([...new Set(cat)]))}</ul> pero eso convierte las cadenas individuales dentro de la matriz en sub-matrices
Lo siento, soy nuevo en los métodos de matriz. Cualquier ayuda es apreciada.
Usaría un fragmento y lo distribuiría en una matriz que puede buscar y filtrar
const str = "<a href=\"https://test.local/product-category/guitar-pickups/\" rel=\"tag\">Guitar Pickups</a>, <a href=\"https://test.local/product-category/hum-cancelling/\" rel=\"tag\">Hum-Cancelling Pickups</a>" const fragment = document.createElement("div"); fragment.innerHTML = str; const links = fragment.querySelectorAll("a"); console.log([...links]) const hrefs = [...links].map(lnk => lnk.href) console.log(hrefs)