Как остановить отображение контейнера при объявлении пустой переменной / объекта в js / node.js - PullRequest
0 голосов
/ 14 октября 2018
const readline = require('readline');

x = [];

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

rl.question('What do you think of Node.js? ', (answer) => {
  // TODO: Log the answer in a database
  rl.close();
  console.log(answer);
  x.push(answer);
});

console.log(x);

Вывод:

What do you think of Node.js? []

Я хотел бы объявить пустой массив без отображения «[]», чтобы он просто сказал: «Что вы думаете о Node.js?»

Ответы [ 2 ]

0 голосов
/ 15 октября 2018
const readline = require('readline');

x = [];

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

rl.question('What do you think of Node.js? ', (answer) => {
  // TODO: Log the answer in a database
  rl.close();
  x.push(answer);
  console.log(x[0]);
});
0 голосов
/ 14 октября 2018

Быстрый способ - просто проверить длину массива и передать то, что вы хотите отобразить

//if it has any length display array as normal
//otherwise just pass empty string
console.log( x.length? x : "" );

Другой вариант - вы можете просто join() элементы массива, которые дадут вам пустую строку для пустых массивов.и разделенный запятыми список для непустых

console.log(x.join())

Последний вариант заключается в использовании пользовательской функции проверки.console.log в среде nodejs в конечном итоге вызывает util.inspect или аналогичную нативную функцию для объектов.Из-за этого вы можете добавить пользовательскую функцию проверки , которая позволяет вам возвращать строку того, что вы хотите отобразить для этого объекта.

Итак, снова вы просто протестируете длину массива, вернув пустуюстрока в случае пустого массива или возврат того, что метод util.inspect должен был бы вернуть оригинал

Array.prototype[util.inspect.custom] = function(){
  if(!this.length){
    return "";
  }
  //passe customInspect:false so the custom inspect method wont be called again
  return util.inspect(this,{customInspect:false});
}

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

...