• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

111
Views
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; }
almost 3 years ago · Juan Pablo Isaza
2 answers
Answer question

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.

almost 3 years ago · Juan Pablo Isaza Report

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.

almost 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error