Walkies

Walk multi dimensional array (also woks with associative arrays)

HTML

<div id="console-log"><h3>Output:</h3></div>

CSS

.console-line
{
    font-family: monospace;
    margin: 2px;
}

JavaScript

var consoleLine = "<p class=\"console-line\"></p>";

console = {
    log: function (data) {
        $("#console-log").append($(consoleLine).html(data));
    }
};

var my_multi_dimensional_array = ["a", "b", "c", ["d", "e", "f"], "g", ["h", ["i"],
    ["j", "k"], "l", ["m", ["n", "o", [
        [
            ["p"], "q"]
    ]]]
]];

(function walkies(arr, path, callback, root) {
    $.each(arr, function (i, v) {
        //push index onto path stack
        path.push(i);
        var recurseable = ($.isArray(v) || $.isPlainObject(v)) ;
        var recurse = callback.call(v, recurseable, v, path, i, root || arr) && recurseable;
        
        //call callback and continue recursing this node until callback returns false
        if ( recurse) {
            walkies(v, path, callback, root || arr);
        }

        //pop last index off path stack
        path.pop();
    });
}(my_multi_dimensional_array, [], function (isLeaf, node, path, index, root) {
    console.log( "[" + path.join("],[") + "]=" + node + ' test' );
    return true;
}));