如何将值设置为 csv 文件中的变量 (node.js)

How to set a value to a variable from a csv file (node.js)

我正在尝试从存储在 csv 文件中的数字列表中 return 一个随机值。但是,当尝试解析 csv 并设置一个值时,承诺是 returned 而不是值。

const fs  = require('fs')

async function getRemainingItem() {
  await fs.readFileSync('remaining-items.csv', 'utf8', (err, data) => {
    if (err) {}
    let linesExceptFirst = data.split('\n').slice(1)
    let num = Math.floor(Math.random() * linesExceptFirst.length)
    let linesArr = linesExceptFirst.map(line=>line.split(','))
    return linesArr[num][0]
  });
}

let item = getRemainingItem()
console.log(item)

如何从包含数字列表的 csv 中 return 随机数?

您正在使用 readFileSync 方法,await 不需要。

const fs = require('fs')

function getRemainingItem() {
    const data = fs.readFileSync('remaining-items.csv', 'utf8');
    const linesExceptFirst = data.split('\n').slice(1);
    const num = Math.floor(Math.random() * linesExceptFirst.length);
    const linesArr = linesExceptFirst.map(line=>line.split(','));
    return linesArr[num][0];
}

const item = getRemainingItem();
console.log(item);

如果你想异步读取文件而不阻塞执行过程,那么可以这样做:

const fs = require('fs');
const fsp = fs.promises;

async function getRemainingItem() {
    const data = await fsp.readFile('remaining-items.csv', 'utf8');
    const linesExceptFirst = data.split('\n').slice(1);
    const num = Math.floor(Math.random() * linesExceptFirst.length);
    const linesArr = linesExceptFirst.map(line=>line.split(','));
    return linesArr[num][0];
}

async function main() {
    const item = await getRemainingItem();
    console.log(item);
}

main();