Почему [{"value": "tag1"} превращается в [object Object] при регистрации? - PullRequest
0 голосов
/ 02 января 2019

На моем сервере node.js у меня есть следующий код:

var tags = [{"value":"tag1"},{"value":"tag2"}];
console.log("tags: " + tags);

Я ожидал, что консоль скажет это:

tags: [{"value":"tag1"},{"value":"tag2"}]

Но вместо этого получил:

tags: [object Object],[object Object]

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

Ответы [ 6 ]

0 голосов
/ 02 января 2019

'+' приводит к строковому форматированию объекта, что приводит к получению объекта [Object Object]. Вам необходимо использовать JSON.stringify () для преобразования вашего объекта в строку JSON перед использованием консоли с '+', в противном случае используйтеконсоль с ",".

0 голосов
/ 02 января 2019

Когда вы создаете объединенную строку с помощью оператора +, для нестроковых частей вызывается метод .toString() для преобразования их в читаемые строки - и этот метод возвращает [object Object] для простых объектов.

Если вы хотите увидеть фактическое содержимое массива, используйте:

  • console.log("tags: ", tags); (при использовании в консоли браузера допускает «интерактивный» журнал: вы сможете щелкнуть массив и развернуть его содержимое);
  • или console.log("tags: " + JSON.stringify(tags));, если вы просто хотите увидеть содержимое напечатанного массива (используйте JSON.stringify(tags, null, 2) для красивой печати с отступом в 2 пробела).
0 голосов
/ 02 января 2019

У вас есть два варианта:

1: использовать запятую , вместо объединения строк во избежание вызова toString() и создания [object Object]:

var tags = [{"value": "tag1"}, {"value": "tag2"}];
console.log("Tags: ", tags);

2: Используйте JSON.stringify() на объекте, чтобы преобразовать его в строку, которая может быть прочитана:

var tags = [{"value": "tag1"}, {"value": "tag2"}];
console.log("Tags: ", JSON.stringify(tags));
0 голосов
/ 02 января 2019

Почему это происходит?

Это происходит потому, что когда вы пытаетесь объединить любую переменную со строкой с помощью оператора +, javascript преобразует значение переменной в строку.

0 голосов
/ 02 января 2019

Вы также можете использовать JSON для правильного ведения журнала объектов, если хотите объединить строки.

var tags = [{
  "value": "tag1"
}, {
  "value": "tag2"
}];
console.log("tags: " + JSON.stringify(tags))
0 голосов
/ 02 января 2019

Когда вы делаете "tags: " + tags, метод toString объектов вызывается для выполнения операции.

Изменение

console.log("tags: " + tags);

в

console.log("tags: ", tags);

, чтобы функция console.log узла могла выполнять свое более интересное преобразование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...