Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

134
Vistas
cómo filtrar en un objeto y persistir sus valores anteriores que fueron filtrados antes

Obtengo las selecciones de id con una función getSelectedId , luego creo un objeto con sus valores selectElementFromSelect cuando escucha un clic y devuelve las coincidencias entre este objeto y un dato simulado con filtrarAutos .

Está funcionando, pero luego tengo que hacer otro filtro agregando en el objeto los otros valores de la selección.

Estaba intentando con una función recursiva pero sigue fallando y haciendo el filtro desde cero

Gracias por tu ayuda

 const resultado = document.querySelector('#resultado') const select = document.querySelectorAll('select') const maxYear = new Date().getFullYear() const minYear = maxYear - 10 const datos = ['marca', 'year', 'minimo', 'maximo', 'puertas', 'transmision', 'color'] let datosBusqueda = {} document.addEventListener('click', (e) => { getSelectedId(e) }) document.addEventListener('DOMContentLoaded', () => { mostrarAutos() llenarSelect() }) const getSelectedId = (e) => { const getId = datos.find(elem => elem === e.target.id) const selectTarget = { id: getId, element: document.querySelector(`#${getId}`) } const propiedadesSeleccionadas = selectElementFromSelect(selectTarget) filtrarAutos(selectTarget, propiedadesSeleccionadas) } const selectElementFromSelect = (selectTarget) => { const {id, element} = selectTarget element.addEventListener('change', (e) => { datosBusqueda[id] = e.target.value }) return datosBusqueda } const mostrarAutos = () => { autos.forEach(auto => { const {marca, modelo, year, puertas, transmision, precio, color} = auto const autoHtml = document.createElement('p') autoHtml.textContent = ` ${marca} ${modelo} - ${year} - ${puertas} Puertas - Transimision: ${transmision} - Precio: ${precio} - color: ${color} ` resultado.appendChild(autoHtml) }) } const llenarSelect = () => { for (let i = maxYear; i >= minYear; i--) { const option = document.createElement('option') option.value = i option.textContent = i year.appendChild(option) } } const filtrarAutos = (selectTarget, propiedadesSeleccionadas) => { const { id } = selectTarget const autosFiltrados = autos.filter(auto => { if (propiedadesSeleccionadas[id]) { return auto[id] === propiedadesSeleccionadas[id] } return auto }) if (autosFiltrados[id]) { filtrarAutos(selectTarget, autosFiltrados) } console.log(autosFiltrados) }
about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda