Rename js snippets
This commit is contained in:
41
snippets/js/s/json-to-csv.md
Normal file
41
snippets/js/s/json-to-csv.md
Normal file
@ -0,0 +1,41 @@
|
||||
---
|
||||
title: JSON to CSV
|
||||
type: snippet
|
||||
language: javascript
|
||||
tags: [array,string,object]
|
||||
cover: pink-flowers
|
||||
dateModified: 2021-10-13T19:29:39+02:00
|
||||
---
|
||||
|
||||
Converts an array of objects to a comma-separated values (CSV) string that contains only the `columns` specified.
|
||||
|
||||
- Use `Array.prototype.join()` to combine all the names in `columns` to create the first row, using the provided `delimiter`.
|
||||
- Use `Array.prototype.map()` and `Array.prototype.reduce()` to create a row for each object. Substitute non-existent values with empty strings and only mapping values in `columns`.
|
||||
- Use `Array.prototype.join()` to combine all rows into a string, separating each row with a newline (`\n`).
|
||||
- Omit the third argument, `delimiter`, to use a default delimiter of `','`.
|
||||
|
||||
```js
|
||||
const JSONtoCSV = (arr, columns, delimiter = ',') =>
|
||||
[
|
||||
columns.join(delimiter),
|
||||
...arr.map(obj =>
|
||||
columns.reduce(
|
||||
(acc, key) =>
|
||||
`${acc}${!acc.length ? '' : delimiter}"${!obj[key] ? '' : obj[key]}"`,
|
||||
''
|
||||
)
|
||||
),
|
||||
].join('\n');
|
||||
```
|
||||
|
||||
```js
|
||||
JSONtoCSV(
|
||||
[{ a: 1, b: 2 }, { a: 3, b: 4, c: 5 }, { a: 6 }, { b: 7 }],
|
||||
['a', 'b']
|
||||
); // 'a,b\n"1","2"\n"3","4"\n"6",""\n"","7"'
|
||||
JSONtoCSV(
|
||||
[{ a: 1, b: 2 }, { a: 3, b: 4, c: 5 }, { a: 6 }, { b: 7 }],
|
||||
['a', 'b'],
|
||||
';'
|
||||
); // 'a;b\n"1";"2"\n"3";"4"\n"6";""\n"";"7"'
|
||||
```
|
||||
Reference in New Issue
Block a user