JavaScript 将对象数组转换为仅包含指定列的CSV字符串
当我们想要将多个值存储在一个变量中时,我们使用数组而不是单个变量。数组允许您存储多种类型的数据,例如字符串、整数等。
在本文中,我们将学习如何将对象数组转换为CSV字符串数据。
给定对象数组(键:值),将其转换为逗号分隔值的CSV字符串,并将键作为标题。
Input : [
Name: "geek",
Roll Number: 121,
Age: 56
]
Output: Name, Roll Number, Age
geek, 121, 56
在编写代码之前,我们必须了解以下一些数组函数。
- Map()函数: Array.prototype.map()函数用于将数组的每个值进行转换,并获得一个新数组。
- Object.Key()函数: object.keys()方法返回数组的键属性。由于我们需要为CSV数据添加标题,所以我们的标题将是对象的键,因此我们使用Object.key()方法来获取标题。
- Push()函数: Array.push()方法用于向数组中添加一个或多个元素。它返回形成的新数组的长度。
- Join()函数: Array.prototype.join()方法用于将数组的值连接成一个字符串。字符串的值由指定的分隔符分隔,其默认值为逗号(, )。
方法:
-
首先创建一个空数组,用于以行的形式存储对象的所有数据。
- 使用Object.keys()方法获取对象的所有键,这些键将成为CSV表的第一行。
- map()方法遍历所有对象,并使用join()方法以逗号(,)作为分隔符将所有值附加到”csvRow[]”数组中。
- push()方法将由map()和Object.keys()获取的所有数据推入”csvRow[]”数组中。
- 映射后,每一行都会通过join(“\n”)方法添加新行。
示例: 以下是上述方法的实现:
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>
输出:
firstname,lastname,age
"geeks","org","12"
"devendra","salunke","31"
"virat","kohli","34"
极客教程