Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

239
Visualizações
¿Cuál es la mejor manera de consultar una matriz en javascript para obtener solo los elementos que quiero?

Tengo una matriz como esta (con poco más de 3000 objetos en lugar de los 3 aquí):

 items = [{name:'charlie', age:'16'}, {name:'ben', age:'18'}, {name:'steve', age:'18'}]

¿Cuál es la mejor manera de devolver una matriz con solo los objetos de personas que tienen 18 años? Entonces yo quiero:

 items = [{name:'ben', age:'18'}, {name:'steve', age:'18'}]

Lo mejor que se me ocurre es esto (usando jQuery):

 newArray = [] $.each(items, function(index, item) { if(item.age=='18') { newArray.push(item) } })

Teniendo en cuenta que hay 3000 mil objetos, y también que haré esa comparación hasta cincuenta veces de una vez, eso es mucho bucle. ¿Hay una mejor manera?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Puedes usar javascript puro

 var wanted = items.filter( function(item){return (item.age==18);} );

Y si su navegador no es compatible con la versión 1.6 de javascript, puede encontrar una implementación del método de filtro en https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/filter


Actualizar

En cuanto a la velocidad, hay una gran diferencia ( tuvo un error en la prueba ) de un bucle normal ( dependiendo del navegador ). Echa un vistazo a esta pequeña prueba que hice en http://jsperf.com/array-filter-vs- bucle/3

over 4 years ago · Santiago Trujillo Relatório

0

Obtenga el elemento y los elementos coincidentes usando el método find () y filter ()

Si desea el primer elemento único coincidente , use el método find () que devuelve un solo objeto.

Si desea que todos coincidan , use el método filter() que devuelve una matriz de objetos.

 let items = [{name:'charlie', age:'16'}, {name:'ben', age:'18'}, {name:'steve', age:'18'}] let all = items.filter(item=> item.age==='18') console.log(all); let single = items.find(item=> item.age==='18') console.log(single);

over 4 years ago · Santiago Trujillo Relatório

0

Si va a realizar la búsqueda con frecuencia, puede ser mejor mantener una versión de sus datos en un formulario que sea de rápido acceso. He usado underscore.js (http://documentcloud.github.com/underscore/) para que me resulte más fácil, pero este código creará un objeto que mantendrá sus datos indexados por el campo de edad.

Terminas con algo que se parece a esto:

 { "16": [ { "name": "charlie", "age": "16" } ], "18": [ { "name": "ben", "age": "18" }, { "name": "steve", "age": "18" } ] }

El código:

 var itemsByAge = _(items).reduce(function(memo, item) { memo[item.age] = memo[item.age] || []; memo[item.age].push(item); return memo; }, {}); alert(JSON.stringify(itemsByAge["18"]));
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda