var csv = [ "name,birthday_day,birthday_month,birthday_year,house_type,house_address_street,house_address_city,house_address_state,house_occupants", "Lily Haywood,27,3,1995,Igloo,768 Pocket Walk,Honolulu,HI,7", "Stan Marsh,19,10,1987,Treehouse,2001 Bonanza Street,South Park,CO,2" ]; var attrs = csv.splice(0,1); var result = csv.map(function(row) { var obj = {}; var rowData = row.split(','); attrs[0].split(',').forEach(function(val, idx) { obj = constructObj(val, obj, rowData[idx]); }); return obj; }) function constructObj(str, parentObj, data) { if(str.split('_').length === 1) { parentObj[str] = data; return parentObj; } var curKey = str.split('_')[0]; if(!parentObj[curKey]) parentObj[curKey] = {}; parentObj[curKey] = constructObj(str.split('_').slice(1).join('_'), parentObj[curKey], data); return parentObj; } return result;