Digamos que tengo una matriz con varias cadenas:
let myArray = [ "www.goal.com/kdñon-BigPussy", "www.goal.com/qwñeorkfnvowv-Paulie", "www.goal.com/woeknapffflmkub-Tony", "www.goal.com/npylhyokhp-Silvio", "www.goal.com/irjnfrfrn-Silvio" ]; Como puede ver, cada final de cadena tiene el siguiente formato: -Name .
Lo que quiero es almacenar las cadenas con el mismo final ( www.goal.com/npylhyokhp-Silvio y www.goal.com/irjnfrfrn-Silvio en nuestro ejemplo) dentro de una nueva matriz.
¿Cómo lo harías usando JavaScript?
Podrías usar String. lastIndexOf () para encontrar dónde comienza la parte del nombre de la URL:
const myArray = [ "www.goal.com/kdñon-BigPussy", "www.goal.com/qwñeorkfnvowv-Paulie", "www.goal.com/woeknapffflmkub-Tony", "www.goal.com/npylhyokhp-Silvio", "www.goal.com/irjnfrfrn-Silvio" ]; const groupedByName = myArray.reduce((grouped, url) => { const name = url.substring(url.lastIndexOf("-") + 1, url.length); grouped[name] = grouped[name] || []; grouped[name].push(url); return grouped; }, {}); console.log(groupedByName); const groups = Object.values(groupedByName); console.log(groups);Puede usar Array.prototype.filter() pasando una función de prueba que implementa String.prototype.endsWith() en cada cadena de la matriz y devuelve verdadero o falso según la cadena pasada como primer argumento.
let myArray = [ "www.goal.com/kdñon-BigPussy", "www.goal.com/qwñeorkfnvowv-Paulie", "www.goal.com/woeknapffflmkub-Tony", "www.goal.com/npylhyokhp-Silvio", "www.goal.com/irjnfrfrn-Silvio" ]; const filteredArray = myArray.filter((url) => url.endsWith('Silvio')) console.log(filteredArray);