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

148
Visualizações
Cómo mejorar forEach en JavaScript para listas grandes

Tengo un objeto de datos bastante grande y cada vez que actualizo la página tengo que reanudar los datos de esa agua. ¿Hay alguna manera de que pueda hacer un forEach más rápido?

 if (Object.keys(jsonData.data.users).length > 0) { Object.keys(jsonData.data.users).forEach((username) => { const user = jsonData.data.users[username]; const register_date = new Date(user.register_date); if (register_date >= start_date && register_date <= end_date) { data.guestsNumber++; } actions += user.actions_per_session; session_duration += user.session_duration; data.cartViews += user.cart_views; }) data.actionsPerSession = (actions / (Object.keys(jsonData.data.users).length)).toFixed(2); data.averageSessionDuration = (session_duration / (Object.keys(jsonData.data.users).length)).toFixed(2); }

¿Qué formas habría de dar un mejor momento?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

En general, esto parece lo suficientemente rápido. Puede tomar algunos puntos de referencia a través de jsbench.me , pero creo que tendrá que mirar más allá del código para rediseñar los tiempos generales de carga de la página.


Pero así es como refactorizaría el código para exprimir el rendimiento

Puede convertir if (arr.length > 0) { arr.forEach(...) } para simplemente hacer arr.forEach(...) . Si la matriz está vacía, forEach simplemente nunca activará la devolución de llamada, pero seguirá siendo válida. Eso evita hacer Object.keys(jsonData.data.users) dos veces.

Además, está llamando a Object.keys(jsonData.data.users) 4 veces diferentes; debería ser un poco más rápido asignar a una variable y reutilizarla.

Entonces debería verse así:

 var users = Object.keys(jsonData.data.users); users.forEach((username) => { const user = jsonData.data.users[username]; const register_date = new Date(user.register_date); if (register_date >= start_date && register_date <= end_date) { data.guestsNumber++; } actions += user.actions_per_session; session_duration += user.session_duration; data.cartViews += user.cart_views; }) data.actionsPerSession = (actions / (users.length)).toFixed(2); data.averageSessionDuration = (session_duration / (users.length)).toFixed(2);
about 4 years ago · Juan Pablo Isaza 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