JSFiddle - React, Tailwind, and code Playground

HTML

<h2>CSV HEADERS</h2>


<h2>CSV VALUES</h2>

<div id="keys"></div>
<script>
    // Load the SDK asynchronously
    (function(d, s, id) {
        var js, fjs = d.getElementsByTagName(s)[0];
        if (d.getElementById(id)) {
            return;
        }
        js = d.createElement(s);
        js.id = id;
        js.src = "http://connect.facebook.net/en_US/all.js";
        fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));
</script>
<div id="values"></div>

CSS

h2 {
    font-weight:bold;
    margin:0 auto 1em auto;
    font-size:20px;
}
#keys, #values, h2 {
    width:50%;
    margin:0;
    float:left;
    white-space:nowrap;
}

JavaScript

function callFBandDownloadFile(ids) {
    var csvString = '';
    var hasRun = false;
    for (var i = 0; i < ids.length; i++) {
        FB.api(ids[i], 'get', function (response) {
            if (response.length != 'undefined') {
                //csvString = toCsv(response);   
                csvString += (hasRun == false ? getArrayValue(response, true) : getArrayValue(response, false));
                console.log(csvString);
                hasRun == true;

            }
        });
        //updateprogressBar(i + 1, ids.length);
    }
    $('#keys').html(csvString);
    window.open("data:text/csv;charset=utf-8," + escape(csvString))
}

function toCsv(response, appendColumnTitles) {


}
var a = ['/74286767824', '196174170417584', '115384455153999', '114330111620'];
callFBandDownloadFile([a[0]]);

function getArrayValue(array, appendColumnTitles) {

    var wantedInfo = ['id', 'name', 'username', 'link', 'about', 'likes', 'talking_about_count', 'checkins', 'were_here_count', 'category', 'category_list', 'location', 'description', 'general_info', 'phone', 'public_transit', 'website', 'link', 'mission', 'company_overview', 'founded', 'parking', 'general_manager'];
    var rowContent = {};
    var currentKey = '';
    var currentKeyVal = '';

    function appendDefaultValue(key, val) {
        rowContent[key] = (typeof array[key] == 'undefined' ? 'N/A' : (val == '' ? 'N/A' : val));
    }

    function appendValuesFromArray(array, key) {
        if (array[key] != 'undefined') {
            for (var i in array[key]) {
                if (typeof array[key][i] == 'object') {
                    appendValuesFromArray(array[key][i], i);
                } else {
                    rowContent[i] = (typeof array[i] == 'undefined' ? (array[key][i] == '' ? 'N/A' : array[key][i]) : 'N/A');
                }
            }
        }
    }
    for (var key = 0; key < wantedInfo.length; key++) {
        currentKey = wantedInfo[key];
        currentKeyVal = array[currentKey];
 ...