Я бы настоятельно рекомендовал не делать JSON вручную.Вместо этого постройте структуру и затем позвольте JSON.stringify
выполнить работу.
Вы также неправильно используете _.map
.Если вы не возвращаете значение из его обратного вызова и не используете возвращаемое значение _.map
, _.map
- неправильный инструмент.Вы бы использовали _.each
вместо этого.(Или используйте ES5 forEach
.) Или, конечно, верните что-нибудь из обратного вызова и используйте возвращенный результат, так как вы, похоже, делаете операцию отображения.
Вот то, что я думаю, вы пытаетесьdo:
const _ = require('lodash');
let dataGroupedByMndtId = _.groupBy(
_.orderBy(data.Entries, 'mndtId'), 'mndtId'
);
let verticalBarChartData = _.map(dataGroupedByMndtId, (transactions, index) => ({
name: String(index), // You seem to want it to be a string, not a number
series: _.map(transactions, (transaction, index) => ({
name: transaction.date, // May need String() around that
value: transaction.amount // And may need String() here too, if you really want a string
}))
}));
outputJsonFile = 'generated.json';
outputJsonPath = path.join(__dirname, 'data', outputJsonFile);
try {
fs.writeFileSync(outputJsonPath, JSON.stringify(verticalBarChartData), { mode: 0o755 });
} catch (err) {
// An error occurred
console.error(err);
}
Я использовал _.map
, потому что вы были, но вы могли бы так же легко использовать ES5 Array.prototype.map
.