Tengo esta matriz, deseo seleccionar todos los nombres que tienen una URL que contiene '/ blekinge'.
¿Alguna forma de hacer esto con el mapa? ¿Y presente en una lista? He llegado hasta aquí:
const allaOrter = orter.map((allOrt) => <li>{allOrt.url}</li> )Lo que me gustaría hacer es tener una especie de declaración if o un bucle forEach que seleccione todas las URL que contienen /blekinge y las presente. Pero no sé cómo... La matriz real con la que estoy trabajando es mucho más grande y contiene muchas direcciones URL. Tal vez incluso cree nuevas matrices que contengan esos elementos que tienen una URL común. Espero que mi ejemplo proporcionado sea suficiente para que alguno de ustedes me ayude. :)
orter.json [{ "id": "2", "namn": "Blekinge", "url": "/blekinge" }, { "id": "23", "namn": "Karlshamn", "url": "/blekinge/karlshamn" }, { "id": "24", "namn": "Karlskrona", "url": "/blekinge/karlskrona" }, { "id": "25", "namn": "Olofström", "url": "/blekinge/olofstrom" }, { "id": "26", "namn": "Ronneby", "url": "/blekinge/ronneby" }]Use el método array.prototype.filter y luego asigne la matriz devuelta
const arr = [{ "id": "2", "namn": "Blekinge", "url": "/blekinge" }, { "id": "23", "namn": "Karlshamn", "url": "/blekinge/karlshamn" }, { "id": "24", "namn": "Karlskrona", "url": "/blekinge/karlskrona" }, { "id": "25", "namn": "Olofström", "url": "/blekinge/olofstrom" }, { "id": "26", "namn": "Ronneby", "url": "/blekinge/ronneby" }] let filtered = (a) => a.url.includes("/blekinge") console.log(arr.filter(filtered)) then map the resultPrimero debe intentar reducir la cantidad haciendo coincidir el objeto que contiene la url /blekinge usando el método de filter . Una vez que haya filtrado, la matriz resultante se puede usar para presentar una lista.
Para simplificar las cosas, implementé una lista desordenada para presentar el resultado, pero el núcleo de lo que necesita está en la matriz filtrada resultante.
let listElement = document.getElementById('name-list'); let data = [ { "id": "2", "name": "Blekinge", "url": "/blekinge" }, { "id": "23", "name": "Karlshamn", "url": "/blekinge/karlshamn" }, { "id": "24", "name": "Karlskrona", "url": "/blekinge/karlskrona" }, { "id": "25", "name": "Olofström", "url": "/blekinge/olofstrom" }, { "id": "26", "name": "Ronneby", "url": "/test/ronneby" } ]; let updateList = (list, content) => { let li = document.createElement("li"); li.innerHTML = content; list.appendChild(li); }; let filteredData = data.filter(elem => elem.url.indexOf('/blekinge') !== -1); filteredData.map(elem => updateList(listElement, elem.name)); <label for="name-list">Matching names</label> <ul id="name-list"> <ul>Demostración de trabajo:
const data = [{ "id": "2", "namn": "Blekinge", "url": "/blekinge" }, { "id": "23", "namn": "Karlshamn", "url": "/alpha/beta" }, { "id": "24", "namn": "Karlskrona", "url": "/blekinge/karlskrona" }, { "id": "25", "namn": "Olofström", "url": "/abc/def" }, { "id": "26", "namn": "Ronneby", "url": "/blekinge/ronneby" }]; const res = data.filter((obj) => obj.url.indexOf('/blekinge') !== -1); console.log(res);