Guest User

Untitled

a guest
Jul 23rd, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.85 KB | None | 0 0
  1. // Node packages for file system
  2. var fs = require('fs');
  3. var path = require('path')
  4.  
  5. var booksCSV = path.join(__dirname, 'books.csv');
  6. var booksJSON = path.join(__dirname, 'books.json');
  7. var delim = ';';
  8.  
  9. // Read CSV
  10. var f = fs.readFileSync(booksCSV, { encoding: 'utf-8' },
  11. function (err) { console.log(err); });
  12.  
  13. // Split on row
  14. f = f.split("\n");
  15.  
  16. // Get first row for column headers
  17. var headers = f.shift().split(delim).map(s => s = s.trim());
  18.  
  19. var tmpArr = []; //temporary array
  20. var rowCouner = 1;
  21. f.forEach(function (dat) {
  22. // Loop through each row
  23. let tmp = {};
  24. let row = dat.split(delim);
  25. if (row.length === headers.length) { //skip rows with wrong number of columns
  26. for (var i = 0; i < headers.length; i++) {
  27. tmp[headers[i]] = row[i].trim();
  28. }
  29. // Add object to list
  30. tmpArr.push(tmp);
  31. } else {
  32. console.log('Row #' + rowCouner + ' skipped because of error.');
  33. };
  34. rowCouner++;
  35. });
  36.  
  37. let tmpjson = [];
  38. while (tmpArr.length !== 0) { //grouping elems by author
  39. let authorDecription = { //object for elements on "authors" array
  40. author: '',
  41. books: []
  42. };
  43.  
  44. let book = { //object for books description
  45. title: '',
  46. description: ''
  47. };
  48.  
  49. let elem = tmpArr.shift();
  50. book.title = elem['Title'];
  51. book.description = elem['Annotation'];
  52. let ind = tmpjson.findIndex((item) => {
  53. return item.author === elem['Author'];
  54. });
  55. if ((ind !== -1)> 0) {
  56. tmpjson[ind].books.push(book);
  57. } else {
  58. authorDecription.author = elem['Author'];
  59. authorDecription.books.push(book);
  60. tmpjson.push(authorDecription);
  61. };
  62. };
  63.  
  64. let json = {}
  65. json.authors = tmpjson;
  66. // Convert object to string, write json to file
  67. fs.writeFileSync(booksJSON, JSON.stringify(json, ' '),
  68. function (err) { console.log(err); });
Add Comment
Please, Sign In to add comment