【问题标题】:Remove unwanted items from an object从对象中删除不需要的项目
【发布时间】:2021-05-27 18:36:53
【问题描述】:

我正在使用 csv-parser npm 模块在我的节点脚本中解析一个 csv。我需要删除从解析器返回的每个对象的第一个条目和空条目。目前我有这段代码可以将解析后的 csv 数据推送到一个数组中:

const parser = require('csv-parser');
const path = require('path');
const fs = require('fs');

const csvFile = path.format({dir: __dirname, base: 'LottoData.csv'}); 
const parsedData = [];

fs.createReadStream(csvFile)
.pipe(parser({ separator: ';', headers: false}))
.on('data', (data) => {
    //console.log(data);
    parsedData.push(data);
})
.on('end', () => {
    console.log(parsedData);
});

处理数据时,csv解析器将返回一个具有此结构的对象:

  {
    '0': '23/03/1940',
    '1': '12',
    '2': '10',
    '3': '12',
    '4': '19',
    '5': '23',
    '6': '28',
    '7': '29',
    '8': '31',
    '9': '39',
    '10': '44',
    '11': '50',
    '12': '51',
    '13': '53',
    '14': '54',
    '15': '56',
    '16': '62',
    '17': '64',
    '18': '65',
    '19': '68',
    '20': '71',
    '21': '80',
    '22': '28',
    '23': ''
  },

如何从每个返回的对象中删除日期和空项,并将每个单个值直接传递到数组中,而不是推送整个对象?

【问题讨论】:

  • 结帐Object.entries()
  • Object.values(parsedData).filter(x => x && !Number.isNaN(Number(x)))

标签: javascript node.js csv


【解决方案1】:

将对象的值列表变成一个数组,然后过滤掉任何你不想要的东西:

const filtered = Object.values(parsedData).filter(v => isValidData(v)});

根据您对数据的了解,您可以在哪里自己实现 isValidData 函数。

(看看你显示的内容似乎是“v 应该是数字”所以如果是这样的话,这对你来说应该是微不足道的)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-05
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    • 2019-10-09
    • 2023-01-26
    • 2021-08-01
    相关资源
    最近更新 更多