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

138
Vistas
Analizando un archivo JSON grande usando Typescript

Quiero analizar/procesar un archivo JSON de 25 MB usando Typescript y filtrar/ordenar los objetos. eficiente.

Nota: el código funcionó en un archivo pequeño

 import fs from 'fs'; searchAccounts(): Promise<Account[]> { const accountSearchCriteria: AccountSearchCriteria = { country: 'NZ', mfa: 'SMS', name: 'TEST', sortField: 'dob' }; const jsonPath = './src/file.json'; const rawAccounts = fs.readFileSync(jsonPath, 'utf-8'); let accounts: Account[] = JSON.parse(rawAccounts); if (accountSearchCriteria) { if (accountSearchCriteria.name) { accounts = accounts.filter( account => account.firstName.toLowerCase() === accountSearchCriteria.name.toLowerCase() || account.lastName.toLowerCase() === accountSearchCriteria.name.toLowerCase() ); } if (accountSearchCriteria.country) { accounts = accounts.filter( account => account.country.toLowerCase() === accountSearchCriteria.country.toLowerCase() ); } if (accountSearchCriteria.mfa) { accounts = accounts.filter( account => account.mfa === accountSearchCriteria.mfa ); } if (accountSearchCriteria.sortField) { accounts.sort((a, b) => { return a[accountSearchCriteria.sortField] < b[accountSearchCriteria.sortField] ? -1 : 1; }); } return accounts; } return accounts; }
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Dado que el tamaño de sus datos es de 25 MB, debe usar un algoritmo de clasificación más eficiente en memoria.

Puedes intentar usar ordenación cíclica.

Cycle-sort puede encontrar una implementación aquí y usarla en su código para ver si hay alguna diferencia.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Node.js es de subproceso único si su código bloquea el subproceso durante mucho tiempo, le dará un error de tiempo de espera. Hay dos problemas con su código.

  1. está utilizando fs.readFileSync(jsonPath, 'utf-8'); , es una función asíncrona y bloquea el hilo mientras lee el archivo. Use en su lugar fs.readFile('./Index.html', callback) :
 const fs = require('fs'); fs.readFile('./Index.html', function read(err, data) { if (err) { throw err; } console.log(data); });
  1. La clasificación de datos también es una tarea de bloqueo de subprocesos, pruebe con una técnica de clasificación diferente, que no ocupa el subproceso durante mucho tiempo.

Nota: Node.js no es bueno con tareas centradas en la CPU, es decir, clasificación, procesamiento de imágenes, etc. Es bueno con tareas de E/S.

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