Search code examples
javascriptjquerytraversable

How to check if object or var is traversable in Javascript?


How can I check the object or variable is traversable in Javascript or jQuery?

An object or a variable which is traversable must works in for each like object.forEach() and $.each(object, callback) in jQuery.

Actually I want to validate it then use it in for each loops.

Update:

The solution which I looking for is something like this:

if(is_traversable($var)) {
    $var.forEach(function(value, key) {
        console.log(value);
    }
}

And you may give me an implementation of is_traversable() function.


Solution

  • For arrays, use Array.isArray() and for objects, you could first check not null and typeof is equal to 'object' or 'function'.

    The wanted function for it:

    var isTraversable = o => Array.isArray(o)
         || o !== null && ['function', 'object'].includes(typeof o);
    
    console.log(isTraversable());               // false
    console.log(isTraversable(undefined));      // false
    console.log(isTraversable(null));           // false
    console.log(isTraversable(''));             // false
    console.log(isTraversable(0));              // false
    console.log(isTraversable('a'));            // false
    console.log(isTraversable(42));             // false
    console.log(isTraversable(/./));            // false
    console.log(isTraversable([]));             // true
    console.log(isTraversable([1]));            // true
    console.log(isTraversable({}));             // true
    console.log(isTraversable({ a: /./ }));     // true
    console.log(isTraversable(function () {})); // true
    console.log(isTraversable(() => true));     // true
    .as-console-wrapper { max-height: 100% !important; top: 0; }