Saltar al contenido

Bucle a través de JSON con node.js

Solución:

Puede iterar a través de objetos de JavaScript de esta manera:

for(var attributename in myobject){
    console.log(attributename+": "+myobject[attributename]);
}

myobject podría ser su json.data

Es posible que también desee utilizar hasOwnProperty en el bucle.

for (var prop in obj) {
    if (obj.hasOwnProperty(prop)) {
        switch (prop) {
            // obj[prop] has the value
        }
    }
}

node.js es de un solo subproceso, lo que significa que su script se bloqueará lo quiera o no. ¿Recuerda que V8 (el motor Javascript de Google que usa node.js) compila Javascript en código de máquina, lo que significa que la mayoría de las operaciones básicas son realmente rápidas y recorrer un objeto con 100 claves probablemente tomaría un par de nanosegundos?

Sin embargo, si hace mucho más dentro del bucle y no quiere que se bloquee ahora, podrías hacer algo como esto

switch (prop) {
    case 'Timestamp':
        setTimeout(function() { ... }, 5);
        break;
    case 'Start_Value':
        setTimeout(function() { ... }, 10);
        break;
}

Si su ciclo está haciendo un trabajo muy intensivo en la CPU, necesitará generar un proceso hijo para hacer ese trabajo o usar trabajadores web.

Recomendaría aprovechar el hecho de que nodeJS siempre será ES5. Recuerde que esta no es la gente del navegador, puede depender de la implementación del lenguaje para que sea estable. Dicho esto, recomendaría no usar nunca un bucle for-in en nodeJS, a menos que realmente desee hacer una recursividad profunda en la cadena del prototipo. Para un bucle simple y tradicional, recomendaría hacer un buen uso del método Object.keys, en ES5. Si ve la siguiente prueba JSPerf, especialmente si usa Chrome (ya que tiene el mismo motor que nodeJS), obtendrá una idea aproximada de cuánto más eficiente es usar este método que usar un bucle for-in (aproximadamente 10 veces más rápido). Aquí hay una muestra del código:

 var keys = Object.keys( obj );
 for( var i = 0,length = keys.length; i < length; i++ ) {
     obj[ keys[ i ] ];
 }
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *