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

286
Vistas
¿Cómo usar una matriz de cadenas para filtrar una matriz de objetos?

Dada una serie de objetos:

 people = [ {id: "1", name: "abc", gender: "m", age:"15", country:"USA" }, {id: "2", name: "def", gender: "m", age:"25", country:"BRA" }, {id: "3", name: "ghi", gender: "f", age:"05", country:"CHI" }, {id: "4", name: "jkl", gender: "m", age:"35", country:"RUS" }, {id: "5", name: "mno", gender: "m", age:"41", country:"JAP" }, {id: "6", name: "pqr", gender: "f", age:"30", country:"COL" }, {id: "7", name: "stu", gender: "f", age:"31", country:"CAN" }, {id: "8", name: "vwx", gender: "m", age:"78", country:"USA" }, ]

Y una serie de claves buscadas:

 wantedKeys = ["name", "age", "country"]

Rendimiento esperado:

 peopleFiltered = [ {name: "abc", age:"15", country:"USA" }, {name: "def", age:"25", country:"BRA" }, {name: "ghi", age:"05", country:"CHI" }, {name: "jkl", age:"35", country:"RUS" }, {name: "mno", age:"41", country:"JAP" }, {name: "pqr", age:"30", country:"COL" }, {name: "stu", age:"31", country:"CAN" }, {name: "vwx", age:"78", country:"USA" }, ]

¿Cómo filtrar la matriz de people para devolver una nueva matriz de objetos solo con los elementos contenidos en la matriz de wantedKeys ?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Solución

Probablemente haya una forma aún más corta con reduce , pero este debería ser un punto de partida válido.

 var peopleFiltered = people.map(person => { var obj = {}; wantedKeys.forEach((key) => obj[key] = person[key]); return obj; });

Demostración de trabajo

 people = [{ id: "1", name: "abc", gender: "m", age: "15", country: "USA" }, { id: "2", name: "def", gender: "m", age: "25", country: "BRA" }, { id: "3", name: "ghi", gender: "f", age: "05", country: "CHI" }, { id: "4", name: "jkl", gender: "m", age: "35", country: "RUS" }, { id: "5", name: "mno", gender: "m", age: "41", country: "JAP" }, { id: "6", name: "pqr", gender: "f", age: "30", country: "COL" }, { id: "7", name: "stu", gender: "f", age: "31", country: "CAN" }, { id: "8", name: "vwx", gender: "m", age: "78", country: "USA" }, ] wantedKeys = ["name", "age", "country"] var peopleFiltered = people.map(person => { var obj = {}; wantedKeys.forEach((key) => obj[key] = person[key]); return obj; }); console.log(peopleFiltered);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Hay una función lodash muy útil, elija que hace exactamente esto. Podemos combinar con Array.map() para obtener el resultado deseado:

 people = [ {id: "1", name: "abc", gender: "m", age:"15", country:"USA" }, {id: "2", name: "def", gender: "m", age:"25", country:"BRA" }, {id: "3", name: "ghi", gender: "f", age:"05", country:"CHI" }, {id: "4", name: "jkl", gender: "m", age:"35", country:"RUS" }, {id: "5", name: "mno", gender: "m", age:"41", country:"JAP" }, {id: "6", name: "pqr", gender: "f", age:"30", country:"COL" }, {id: "7", name: "stu", gender: "f", age:"31", country:"CAN" }, {id: "8", name: "vwx", gender: "m", age:"78", country:"USA" }, ] wantedKeys = ["name", "age", "country"]; let result = people.map(p => _.pick(p, wantedKeys)); console.log('Result:'); result.forEach(r => console.log(JSON.stringify(r)))
 .as-console-wrapper { max-height: 100% !important; top: 0; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js" referrerpolicy="no-referrer"></script>

También un enfoque de JavaScript estándar, usando Object.fromEntries() y Array.map() :

 people = [ {id: "1", name: "abc", gender: "m", age:"15", country:"USA" }, {id: "2", name: "def", gender: "m", age:"25", country:"BRA" }, {id: "3", name: "ghi", gender: "f", age:"05", country:"CHI" }, {id: "4", name: "jkl", gender: "m", age:"35", country:"RUS" }, {id: "5", name: "mno", gender: "m", age:"41", country:"JAP" }, {id: "6", name: "pqr", gender: "f", age:"30", country:"COL" }, {id: "7", name: "stu", gender: "f", age:"31", country:"CAN" }, {id: "8", name: "vwx", gender: "m", age:"78", country:"USA" }, ] wantedKeys = ["name", "age", "country"]; let result = people.map(p => Object.fromEntries(wantedKeys.map(k => [k,p[k]]))); console.log('Result:'); result.forEach(r => console.log(JSON.stringify(r)))
 .as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Juan Pablo Isaza Denunciar
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