Funcion filter devolver datos
Publicado por Pedro (18 intervenciones) el 23/03/2024 21:39:00
Buenas tardes.
Tengo un problema al usar la función filter. Cuando le paso los parametros a través del igual, quiero que recoja 3 opciones a la hora de filtrar, pero cuando le paso mas de un parametro deja de funcionar y me devuelve el array completo sin filtrar. Aparte de ello, este mismo filter, quiero imprimirlo por pantalla,. he iterado el array e intentado a través de un innerhtml mostrar los datos en pantalla, pero esto tampoco funciona. Este sería el código.
Tengo un problema al usar la función filter. Cuando le paso los parametros a través del igual, quiero que recoja 3 opciones a la hora de filtrar, pero cuando le paso mas de un parametro deja de funcionar y me devuelve el array completo sin filtrar. Aparte de ello, este mismo filter, quiero imprimirlo por pantalla,. he iterado el array e intentado a través de un innerhtml mostrar los datos en pantalla, pero esto tampoco funciona. Este sería el código.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<div class="formulario">
<form action="">
<input type="text" class="datos" id="name" placeholder="Nombre">
<input type="text" class="datos" id="origin" placeholder="Origen">
<input type="text" class="datos" id="destiny" placeholder="Destino">
<input type="text" class="datos" id="people" placeholder="Personas">
<input type="date" class="datos" id="dates" placeholder="Fecha">
<button type="button" onclick="recoger()">Mas información</button>
<button type="button" onclick="filtrado()">Filtrar</button>
</form>
<div>
<section id="viajero"></section>
</div>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
let arrViaje = [];
function recoger(){
let nombre = document.getElementById("name").value.toLowerCase()
let origen = document.getElementById("origin").value.toLowerCase()
let destino = document.getElementById("destiny").value.toLowerCase()
let personas = document.getElementById("people").value.toLowerCase()
let fechas = document.getElementById("dates").value
let viaje = {
name : nombre,
origin: origen,
destiny: destino,
people: personas,
dates: fechas
}
console.log(viaje)
arrViaje.push(viaje);
console.log(arrViaje)
}
function filtrado(){
/**Si quito el operador OR el filter funciona pero al pasarle mas de un elemento no filtra*/
let result = arrViaje.filter((city) => city.destiny.toLowerCase() == 'canarias' || 'galicia' || 'mallorca')
console.log(result);
}
console.log(filtrado());
let viajero = document.getElementById("viajero")
/**Aquí itero sobre el array , lo recorro para poder imprimirlo despues*/
for(let i = 1; i<filtrado.length; i++){
/**Aquí lo quiero meter en una lista, en el section ya creado en el html que recojo en la linea de arriba, pero esto no hace nada, el filtro se imprime en consola, pero en la pantalla no sale nada*/
viajero.innerHTML += `<li>${filtrado[i].name}</li>
<li>${filtrado[i].origin}</li>
<li>${filtrado[i].destiny}</li>
<li>${filtrado[i].people}</li>
<li>${filtrado[i].dates}</li>`
}
Valora esta pregunta


0