tengo matriz:
link https://api/v1/3 link https://api/v1/3/user-data link https://api/v1/3/customer-data link https://api/v1/3/suppliers-supSoy una matriz de filtros:
let res = val.match(/.*\/(.*)/)[1];segunda forma de filtrar:
const result = links.reduce((acc, {href: link}) => { const last = link.split('/').pop(); if (!(last == Number(last))) acc.push(last); return acc; }, []);Y ahora mismo los resultados son:
[ "user-data", "customer-data", "suppliers-sup" ]La primera forma lógica es con el elemento "3", pero no es importante por ahora.
Lo que necesito ? para filtrar a los resultados ser:
[ "User data", "Customer data", "Suppliers sup" ]Con primera letra grande y quitar "-" y aplicar espacio
De manera concisa, puede lograr su resultado como:
console.log( [ "https://api/v1/3", "https://api/v1/3/user-data", "https://api/v1/3/customer-data", "https://api/v1/3/suppliers-sup" ].reduce((acc, href) => { let result = href.replace(/.*\/([az])?(.*)/, (_, $1, $2) => $1 ? $1.toUpperCase() + $2 : "") if (result) return [...acc, result] return acc }, []) )Puede formatear los datos de esta manera:
// Sample Data const data = [ "user-data", "customer-data", "suppliers-sup" ] const formattedData = data.map(item => { // Seperate words into an array let dataItems = item.split("-") // Capitalize first letter of each word dataItems = dataItems.map(word => word.charAt(0).toUpperCase() + word.slice(1)) // Join the words back together return dataItems.join(" ") })