чтение нескольких строк в node.js

В настоящее время я выполняю некоторые тесты в Kattis, чтобы попрактиковаться в работе с node.js, но я застрял с этим на< / а> е.

Ниже мой код..

const readline = require("readline");

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});
  
rl.on("line", (line) => {
  let inputData = line.split("/n");
  console.log(inputData[0].length);

  // result = (inputData[0].length) >= (inputData[1].length) ? 'go' : 'no';
  // console.log(result)
});

.. и в журнале консоли inputData[0].length я получаю:

4
6

Когда я использовал inputData1, это дало мне неопределенность. Как я могу сравнить эти 2 строки, чтобы в результате отображалось «да» или «нет»?


person Janina Estrella    schedule 15.11.2020    source источник
comment
По определению вы получаете ОДНУ строку за раз с этим интерфейсом. Если вы хотите сравнить две строки, вы должны сохранить первую строку в переменной с более высокой областью действия, а затем, когда произойдет следующее событие line, вы можете увидеть, есть ли у вас уже сохраненное, и, если да, сравнить с ним. В этом интерфейсе нет просмотра вперед.   -  person jfriend00    schedule 16.11.2020
comment
Если ваш файл невелик, вы можете использовать fs.promises.readFile() и прочитать весь файл, разбить его, и тогда у вас будет массив всех строк, и вы сможете сравнивать все, что хотите.   -  person jfriend00    schedule 16.11.2020
comment
Как я могу сохранить его в переменной с более высокой областью действия, когда он получает обе строки?   -  person Janina Estrella    schedule 16.11.2020
comment
Какую общую проблему вы пытаетесь решить здесь? Вы просто пытаетесь прочитать первые две строки файла?   -  person jfriend00    schedule 16.11.2020
comment
Я спрашиваю, потому что я думаю, что нам нужно больше контекста для того, что вы пытаетесь сделать, чтобы сделать правильное предложение о том, как это решить.   -  person jfriend00    schedule 16.11.2020


Ответы (1)


По определению вы получаете ОДНУ строку за раз с этим интерфейсом. Событие line в интерфейсе readline просто дает вам одну строку за раз. Таким образом, он никогда не даст вам две строки, которые вы можете сравнить.

Если вы просто хотите сравнить последовательные строки в файле с любой логикой, которую вы хотите, вы можете сохранить предыдущую строку в переменной с более высокой областью действия и сравнить следующую строку с той, когда произойдет следующее событие line.

const readline = require("readline");

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let previousLine = "";
  
rl.on("line", (line) => {
    if (!previousLine) {
        // no previous line to compare to, so just remember this line
        previousLine = line;
    } else {
        let result = previousLine.length >= line.length ? 'go' : 'no';
        console.log(result);
        previousLine = line;
    }
});

Но, как я уже говорил в своих комментариях пару раз, если вы сообщите нам, какую реальную проблему вы пытаетесь решить или чего вы действительно пытаетесь достичь, то мы, вероятно, сможем помочь вам с хорошим решением проблемы. реальная проблема.

person jfriend00    schedule 16.11.2020
comment
добавление предыдущей строки фактически решило проблему. Спасибо! :) - person Janina Estrella; 16.11.2020