with reduce

HTML

<script>
    
    var _consoleLog = console.log;
    
    console.log = function(){
        var name = _consoleLog.apply(console,arguments);
        var str = "";
        for(var index in arguments){
            if(Array.isArray(arguments[index])){
               arguments[index] = arguments[index].map(function(item){
                    if(typeof item == "object"){
    item = JSON.stringify(item,null,4)+"<br>";
                    }
    
                    return item;
               });
               str += arguments[index]+" ";
                
            } else if(typeof arguments[index] == "object"){
                str += JSON.stringify(arguments[index],null,4);
            } else {
                str += arguments[index]+" ";
            }
        }
    $('body').append("<div>"+str+"</div>");
    }
   
</script>

JavaScript

/*
* Difference between not passing any parameters
* and passing in a additional parameter into `reduce()`
*/

var arr = ["apple","orange"];

function noPassValue(){
    return arr.reduce(function(prev,next){
        console.log("prev:",prev);
        console.log("next:",next);
        
        return prev + " " +next;
    });
}
function passValue(){
    return arr.reduce(function(prev,next){
        console.log("prev:",prev);
        console.log("next:",next);
        
        prev[next] = 1;
        return prev;
    },{});
}

console.log("No Additional parameter:",noPassValue());
console.log("----------------");
console.log("With {} as an additional parameter:",passValue());