Edit in JSFiddle

function csvify(data, defaultValue, padBack) {

    var maxColumnLength = 0,
        columnNames = Object.keys(data),
        transformed = [],
        columnName;

    for(columnName in data) {
        if(data[columnName].length > maxColumnLength) {
            maxColumnLength = data[columnName].length;
        }
    }

    transformed.push(columnNames.join(", "));

    for(var i = 0; i < maxColumnLength; i++) {
        var temp = []

        for(var j = 0; j < columnNames.length; j++) {
            var columnName = columnNames[j];
                    
            if(data[columnName].length < maxColumnLength) {
                // column is not the same size as the max.

                if(!padBack) {
                    // array padding at the front
	                if( i < (maxColumnLength - data[columnName].length)) {
                        temp.push(defaultValue);
                    } else {
                        temp.push(data[columnName][data[columnName].length - maxColumnLength + i]);
                    }
                } else {
                    // array padding at the back
                    if( i >= data[columnName].length) {
                        temp.push(defaultValue);
                    } else {
                        temp.push(data[columnName][i]);
                    }
                }
            } else {
                temp.push(data[columnName][i]);
            }
        }
        transformed.push(temp.join(", "));
    }

    return transformed.join("\r\n");
}


var data = {
    w: [1],
    x: [1,2,3,4,5],
    y: [6,7,8,9,0],
    z: [1,2,3]
};                                  

var transformed = csvify(data, 0, true);

var blob = new Blob([transformed], {type: "text/csv"});

var url  = window.URL.createObjectURL(blob);

$("#test").attr("href", url);
$("#test").attr("download", "spreadsheet.csv");

<a id="test" href="#">Download</a>