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

211
Vistas
No se pueden eliminar datos del archivo json en el disco

No puedo encontrar una manera de eliminar toda la línea de datos JSON (línea) después de su uso. Por alguna razón, delete no funciona o, más bien, dice que no está haciendo nada.

.JSON

 [ {"id":"1","code":"super-S","expires_in":"","gives_currencies":"1.5","gives_items":"","number_of_attempts":"1","attempts_used":""}, {"id":"2","code":"wow!","expires_in":"","gives_currencies":"3","gives_items":"","number_of_attempts":"1","attempts_used":""}, {"id":"3","code":"slashme","expires_in":"","gives_currencies":"4","gives_items":"","number_of_attempts":"1","attempts_used":""}, {"id":"4","code":"randombla","expires_in":"","gives_currencies":"5","gives_items":"","number_of_attempts":"1","attempts_used":""} ]

código

 //fs configuration const fs = require('fs'); let rawdata = fs.readFileSync('test.json'); let mycodes = JSON.parse(rawdata); //something above const randomcode = mycodes[Math.floor(Math.random() * mycodes.length)]; console.log('Your code is:', randomcode['code']); //logs me a random code value delete mycodes[randomcode];

El objetivo aquí es seleccionar un código aleatorio, que está hecho, pero luego necesito eliminarlo del archivo .JSON para que no se repita. Probé varias cosas pero no funciona, delete.randomcode , etc., la línea nunca se eliminó del archivo .JSON.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Utilice Array.prototype. splice (index, deleteCount) en lugar de delete .
delete , en un Array, simplemente null la clave, sin eliminarla.

Guarde sus datos modificados usando JSON.stringify(mycodes) en ese mismo archivo.

 const fs = require('fs'); const mycodes = JSON.parse(fs.readFileSync('./test.json')); const randomIndex = Math.floor(Math.random() * mycodes.length); const randomObject = mycodes[randomIndex]; console.log('Your code is:', randomObject.code); // Log a random code value mycodes.splice(randomIndex, 1); // Remove one key at randomIndex // Write back to file fs.writeFileSync('test.json', JSON.stringify(mycodes, 0, 4), 'utf8');

Si ya tiene ese objeto fuera de su matriz, y dado que los objetos se pasan por referencia (como un puntero en la memoria), utilice Array.prototype.indexOf(someObject) como:

 const fs = require('fs'); const mycodes = JSON.parse(fs.readFileSync('./test.json')); const randomIndex = Math.floor(Math.random() * mycodes.length); const randomObject = mycodes[randomIndex]; // later in your code.... const objIndex = mycodes.indexOf(randomObject); // Get Object index in Array mycodes.splice(objIndex, 1); // Remove it from array at that index // Write back to file fs.writeFileSync('test.json', JSON.stringify(mycodes, 0, 4), 'utf8');
over 4 years ago · Santiago Trujillo Denunciar

0

Debe conservar sus datos escribiéndolos nuevamente en su archivo JSON después de usar JSON.stringify() .

Mientras lo hace, puede mover su código a funciones, lo que hará que sea más fácil de leer y trabajar con él.

También es posible que desee leer acerca de la edición de matrices mediante Array.prototype.splice() .

El delete de eliminación es para eliminar propiedades de los objetos. Si bien puede usarlo para eliminar elementos de una matriz, dejará el índice vacío en lugar de cerrar el espacio en la matriz después de la eliminación.

 const fs = require('fs'); // get a random element from any array function getRandomElement (array) { const randomElement = array[Math.floor(Math.random() * array.length)]; return randomElement; } function deleteElementFromArray (array, element) { const index = array.indexOf(element); if (index < 0) return false; array.splice(index, 1); return true; } // move the reading work inside a function function readJson (filePath) { const json = fs.readFileSync(filePath, {encoding: 'utf8'}); const data = JSON.parse(json); return data; } // move the reading work inside a function function writeJson (filePath, data) { const json = JSON.stringify(data); fs.writeFileSync(filePath, json); } const jsonFilePath = 'test.json'; const mycodes = readJson(jsonFilePath); const randomcode = getRandomElement(mycodes); console.log('Your code is:', randomcode['code']); deleteElementFromArray(mycodes, randomcode); writeJson(jsonFilePath, mycodes);
over 4 years ago · Santiago Trujillo 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