Open In App

Write a program to convert an array of objects to a CSV string that contains only the columns specified using JavaScript

Last Updated : 10 Jan, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

When we want to store multiple values in one variable then instead of a variable, we use an array. which allows you to store multiple types of data for example you could have a string, an integer, etc.

In this article, we will learn to convert the array objects to CSV string data. 

Given array objects ( key: value ) to CSV string comma-separated values and keys as header.

Input :  [
             Name: "geek", 
             Roll Number:  121,
             Age: 56
         ] 
           
Output:  Name, Roll Number, Age
         geek, 121, 56

Before getting into code we must know some about the following Array functions.

  • Map() function: Array.prototype.map() function used when we want to transform each value of the array and want to get a new array out of it.
  • Object.Key() Function: object.keys() method returns the key properties of this array.  as we need a header for CSV data so our header is going to be the keys of an object so to get the header we use Object.key() method.
  • Push() function: The Array.push() method is used to add one or multiple elements to an array. It returns the new length of the array formed.
  • Join() function: The Array.prototype.join() method is used to join the values of an array into a string. The values of the string will be separated by a specified separator and its default value is a comma(, ).

Approach:

  • Create an empty array first to store all data of an object in form of rows.
  • Using the Object.keys() method fetches all keys of an object which are going to be the first row of the CSV table.
  • map() method iterate over all objects and append all values to the “csvRow[]” array along with comma(,) separator using the join() method.
  • push() method will push all data into “csvRow[]” array fetched by map() and Objects.keys().
  • after mapping, each row new line will be added by the join(“\n”) method.

Example: Below is the implementation of the above approach:

Javascript




<script>
    const objectToCsv = function (data) {
     
        const csvRows = [];
     
        /* Get headers as every csv data format
        has header (head means column name)
        so objects key is nothing but column name
        for csv data using Object.key() function.
        We fetch key of object as column name for
        csv */
        const headers = Object.keys(data[0]);
     
        /* Using push() method we push fetched
           data into csvRows[] array */
        csvRows.push(headers.join(','));
     
        // Loop to get value of each objects key
        for (const row of data) {
            const values = headers.map(header => {
                const val = row[header]
                return `"${val}"`;
            });
     
            // To add, separator between each value
            csvRows.push(values.join(','));
        }
     
        /* To add new line for each objects values
           and this return statement array csvRows
           to this function.*/
        return csvRows.join('\n');
    };
     
    const data = [{
        "firstname": "geeks",
        "lastname": "org",
        "age": 12
    },
    {
        "firstname": "devendra",
        "lastname": "salunke",
        "age": 31
    },
    {
        "firstname": "virat",
        "lastname": "kohli",
        "age": 34
    },
    ];
     
    // Data passed as parameter
    const csvData = objectToCsv(data);
    console.log(csvData);
</script>


Output: 

firstname,lastname,age
"geeks","org","12"
"devendra","salunke","31"
"virat","kohli","34"


Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads