Hola a continuación es una matriz de cadenas
const arr = [ "list/1/item/1/", "some-domain/2/item/2/", "item/3/", "some-domain/4/item/5/subitem/1/", ]tengo que filtrar aquellas cadenas que comienzan con la cadena "item/3/" o terminan con la cadena "item/3/"
entonces, desde la matriz anterior, la matriz filtrada esperada es como la siguiente,
const filtered_arr = [ "list/1/item/1/", "some-domain/2/item/2/", "item/3/", ]de la matriz filtrada quiero obtener el número después de "/elemento/". entonces, desde la matriz filtrada anterior, el resultado esperado es
const arr_ids = ["1", "2", "3"]lo que he probado,
he usado a continuación para hacer coincidir las cadenas que comienzan o terminan con /item/3/
const filtered_arr = arr.map(str) => { return str.match(/item\/[0-9](\/)?$/g); }esto da el filtered_arr
const filtered_arr = [ "list/1/item/1/", "some-domain/2/item/2/", "item/3/", ]pero, ¿cómo hago un mapa a través de cada elemento de la matriz y obtengo el número después de la cadena "/ elemento /".
Podría alguien ayudarme con esto. Gracias.
Use el filter para filtrar las rutas que comienzan o terminan en item/\d+/ . Luego use el map para extraer el número de artículo de cada ruta coincidente.
const arr = [ "list/1/item/1/", "some-domain/2/item/2/", "item/3/", "some-domain/4/item/5/subitem/1", ]; var output = arr.filter(x => x.match(/^item\/\d+|\bitem\/\d+\/$/)) .map(x => x.match(/(?<=^item\/)\d+|(?<=\bitem\/)\d+(?=\/$)/)[0]); console.log(output);Esto puede ayudar:
const filtered_arr = arr.map(str) => { const match = str.match(/\/item\/(\d)/); return(match[1]); }