Форматирование отображения объекта javascript через узел

#javascript #object

#javascript #объект

Вопрос:

Я был озадачен этим некоторое время. Давайте возьмем этот простой объект:

 let animalList = {
  animals : ["dog","cat","horse"],
  colors : ["blue","red"]
};

console.log(animalList);
  

Это дает мне такой результат:

 { animals: [ 'dog', 'cat', 'horse' ],
  colors: [ 'blue', 'red' ] }
  

Допустим, вместо этого я хотел этот вывод (я понимаю, что это чисто косметический):

 {
  animals: [ "dog", "cat", "horse" ],
  colors: [ "blue", "red" ]
}
  

Где узел хранит его свойства отображения? (используемый символ кавычки, интервал и новые строки для отображения объекта и так далее)

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

1. Это свойства браузера. Сам объект не имеет свойств форматирования .

2. Вероятно, это скрыто глубоко в браузере.

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

Ответ №1:

Вы могли бы использовать JSON.stringify (mdn) для некоторого форматирования:

 let animalList = {
  animals : ["dog","cat","horse"],
  colors : ["blue","red"]
};

console.log(JSON.stringify(animalList, null, 2));  

Но чтобы настроить способ обработки новых строк, вам нужно будет создать свою собственную функцию obj-> string, такую как:

 let prettyPrint = (obj, indent = 0, indentStep = 2) => {
  if (Array.isArray(obj))
    return `[ ${obj.map(a => prettyPrint(a, indent   1, indentStep)).join(', ')}]`;
  if (typeof obj === 'string')
    return `"${obj}"`;
  if (typeof obj === 'number')
    return number;
  if (typeof obj === 'undefined')
    return 'undefined';
  if (typeof obj === 'object') {
    let spaces = ' '.repeat((indent   1) * indentStep);
    let inside = Object.entries(obj).map(([key, value]) =>
        `${spaces}${key}: ${prettyPrint(value, indent   1, indentStep)}`);
    return `{n${inside.join(',n')}n},`;
  }
};

let animalList = {
  animals: ["dog", "cat", "horse"],
  colors: ["blue", "red"]
};

console.log(prettyPrint(animalList));