Получение данных из CSV-файла с последующим назначением массиву объектов SmartPostShipments []. Вывести «общее» количество элементов в массиве довольно просто с помощью свойства .length, но мне также нужно получить сумму значений каждого поля в массиве объектов, который называется ['Сумма чистой стоимости']. Каков наилучший способ добиться этого? Я согласен с использованием console.info() для этой иллюстрации.
const { parse } = require('csv-parse')
const fs = require('fs')
const SmartPostShipments = []
function isSmartpost(shipment) {
return shipment['Service Type'] === 'SmartPost'
}
fs.createReadStream('test.csv')
.pipe(parse({
columns: true
}))
.on('data', (data) => {
if (isSmartpost(data)) {
SmartPostShipments.push(data)
}
})
.on('error', (err) => {
console.info(err)
})
.on ('end', () => {
// This outputs each individual 'net charge amount', but how do I just display the sum
// total?
console.info(SmartPostShipments.map((shipment)=> {
return shipment['Net Charge Amount']
}))
console.info(`${SmartPostShipments.length} Smartpost shipments.`)
})
Несколько вариантов кода выглядят хорошо, но данные добавляются, а не суммируются. Вот фото вывода:
console.info(SmartPostShipments.map((shipment)=> {
return shipment['Net Charge Amount']
}))
const sum = SmartPostShipments.reduce((partialSum, shipment) => partialSum + shipment['Net Charge Amount'], 0)
console.info(sum)
const sumSP = SmartPostShipments.reduce((cur, pre)=> {
return cur+=pre['Net Charge Amount'];
},0)
console.info(sumSP)
Добавление parseInt() помогло: return cur += parseInt(pre['Net Charge Amount']); Общая стоимость = 490
Поцарапать это... используя parseFloat(), а не parseInt().
const sum = SmartPostShipments.reduce((cur, pre)=> {
return cur+=pre['Net Charge Amount'];
},0)
console.info(sum)
Пожалуйста, попробуйте выше. Надеюсь, что это работает.
Он ищет сумму свойств объектов, я думаю, это должно быть что-то вроде return cur+=pre['Net Charge Amount'];
Спасибо, я просто забыл добавить это.
Это вариант этого вопроса. Применительно к вашей ситуации код будет таким:
const sum = SmartPostShipments.reduce((partialSum, shipment) => partialSum + shipment['Net Charge Amount'], 0)
Пожалуйста, поделитесь своим CSV-файлом.