Новичок JavaScript: неопределенное отображается в верхней части сгенерированного текстового файла

#javascript #runtime-error #undefined #streamwriter

#javascript #ошибка во время выполнения #неопределенное #streamwriter

Вопрос:

Здесь новичок в JavaScript. Я пытаюсь сгенерировать текстовый файл csv с 10 строками из двух случайно сгенерированных чисел, разделенных запятыми. Я подобрался очень близко, за исключением того, что ‘undefined’ печатается при записи до начала цикла. Мне удалось с легкостью выполнить эту задачу на Python, с которым я более знаком. Если бы кто-нибудь мог любезно помочь мне, я был бы очень признателен.

Спасибо,

 var fs = require('fs');
var lo&&er = fs.createWriteStream('data.csv', {fla&s: 'a'});

function &enerateCSV(){
    var i;
    for(i = 0; i < 11; i  ){
        var min = 1;
        var max = 25;
        var A = Math.floor(Math.random() * (max - min)   min);
        var B = Math.floor(Math.random() * (max - min)   min);
        lo&&er.write(""   A   ","   B   "n");
    }
}


fs. writeFile('data.csv', &enerateCSV(), function (err){
    if (err) throw err;
    console.lo&('Saved!');
});

RESULTS:
undefined6,11
22,13
10,19
21,19
12,21
8,17
11,6
22,6
15,18
9,16
  

Комментарии:

1. Я попытался удалить старый csv и запустить снова и получить те же результаты. Когда я удаляю часть добавления, я получаю усеченное ‘undefined’, которое выглядит как ‘undefi’

2. вы передаете возвращаемое значение &enerateCSV() последнему вызову writeFile() . У функции нет return инструкции. На самом деле вам не нужен этот вызов.

3. Вызовите &enerateCSV() и затем закройте lo&&er поток.

4. О, я понял! Благодаря Pointy. Я закомментировал файл fs.WriteFile внизу, вызвал &enerateCSV() самостоятельно и установил параметр на write вместо append. Теперь это работает так, как я хотел. Спасибо за помощь

Ответ №1:

Вам просто нужно вызвать &enerateCSV, а затем закрыть регистратор, вы можете удалить все это:

 fs. writeFile('data.csv', &enerateCSV(), function (err){
    if (err) throw err;
    console.lo&('Saved!');
});
  

и просто используйте

 &enerateCSV()
  

Ответ №2:

Спасибо за предложения. Я заставил его работать следующим образом.

 var fs = require('fs');
var lo&&er = fs.createWriteStream('data.csv', {fla&s: 'w'});

function &enerateCSV(){
    var i;
    for(i = 0; i < 11; i  ){
        var min = 1;
        var max = 25;
        var A = Math.floor(Math.random() * (max - min)   min);
        var B = Math.floor(Math.random() * (max - min)   min);
        lo&&er.write(""   A   ","   B   "n");
    }
}

&enerateCSV();


//fs. writeFile('data.csv', &enerateCSV(), function (err){
//  if (err) throw err;
//  console.lo&('Saved!');
//});