Iterate over object keys in node.js

后端 未结 5 1732
伪装坚强ぢ
伪装坚强ぢ 2020-11-30 23:12

Since Javascript 1.7 there is an Iterator object, which allows this:

var a={a:1,b:2,c:3};
var it=Iterator(a);

function iterate(){
    try {  
        consol         


        
5条回答
  •  醉梦人生
    2020-11-30 23:45

    I'm new to node.js (about 2 weeks), but I've just created a module that recursively reports to the console the contents of an object. It will list all or search for a specific item and then drill down by a given depth if need be.

    Perhaps you can customize this to fit your needs. Keep It Simple! Why complicate?...

    'use strict';
    
    //console.log("START: AFutils");
    
    // Recusive console output report of an Object
    // Use this as AFutils.reportObject(req, "", 1, 3); // To list all items in req object by 3 levels
    // Use this as AFutils.reportObject(req, "headers", 1, 10); // To find "headers" item and then list by 10 levels
    // yes, I'm OLD School!  I like to see the scope start AND end!!!  :-P
    exports.reportObject = function(obj, key, level, deep) 
    {
        if (!obj)
        { 
            return;
        }
    
        var nextLevel = level + 1;
    
        var keys, typer, prop;
        if(key != "")
        {   // requested field
            keys = key.split(']').join('').split('[');
        }
        else
        {   // do for all
            keys = Object.keys(obj);
        }
        var len = keys.length;
        var add = "";
        for(var j = 1; j < level; j++)
        {
            // I would normally do {add = add.substr(0, level)} of a precreated multi-tab [add] string here, but Sublime keeps replacing with spaces, even with the ["translate_tabs_to_spaces": false] setting!!! (angry)
            add += "\t";
        }
    
        for (var i = 0; i < len; i++) 
        {
            prop = obj[keys[i]];
            if(!prop)
            {
                // Don't show / waste of space in console window...
                //console.log(add + level + ": UNDEFINED [" + keys[i] + "]");
            }
            else
            {
                typer = typeof(prop);
                if(typer == "function")
                {
                    // Don't bother showing fundtion code...
                    console.log(add + level + ": [" + keys[i] + "] = {" + typer + "}");
                }
                else
                if(typer == "object")
                {
                    console.log(add + level + ": [" + keys[i] + "] = {" + typer + "}");
                    if(nextLevel <= deep)
                    {
                        // drop the key search mechanism if first level item has been found...
                        this.reportObject(prop, "", nextLevel, deep); // Recurse into
                    }
                }
                else
                {
                    // Basic report
                    console.log(add + level + ": [" + keys[i] + "] = {" + typer + "} = " + prop + ".");
                }
            }
        }
        return ;
    };
    
    //console.log("END: AFutils");
    

提交回复
热议问题