Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么[{quot;value";:“tag1";}在登录时会变成[object object]?_Javascript_Arrays_Node.js_String_Object - Fatal编程技术网

Javascript 为什么[{quot;value";:“tag1";}在登录时会变成[object object]?

Javascript 为什么[{quot;value";:“tag1";}在登录时会变成[object object]?,javascript,arrays,node.js,string,object,Javascript,Arrays,Node.js,String,Object,在node.js服务器上,我有以下代码: var tags = [{"value":"tag1"},{"value":"tag2"}]; console.log("tags: " + tags); 我希望控制台会这样说: tags: [{"value":"tag1"},{"value":"tag2"}] 但却得到了这个: tags: [object Object],[object Object] 为什么会发生这种情况?这会在我的代码中造成问题,因为我正在尝试访问值,但无法访问。当您执行“标

在node.js服务器上,我有以下代码:

var tags = [{"value":"tag1"},{"value":"tag2"}];
console.log("tags: " + tags);
我希望控制台会这样说:

tags: [{"value":"tag1"},{"value":"tag2"}]
但却得到了这个:

tags: [object Object],[object Object]
为什么会发生这种情况?这会在我的代码中造成问题,因为我正在尝试访问值,但无法访问。

当您执行
“标记:“+tags
”时,会调用以执行该操作

改变

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


这样节点的
console.log
函数就可以自己进行更有趣的转换。

如果要连接字符串,还可以使用
JSON
正确地记录对象

var标记=[{
“值”:“tag1”
}, {
“值”:“tag2”
}];
log(“标记:+JSON.stringify(标记))
为什么会发生这种情况

这是因为当您尝试使用
+
运算符将任何变量与字符串连接时,javascript会将变量的值转换为字符串。

您有两个选项:

1:使用逗号
而不是将字符串连接在一起,以避免调用
toString()
并创建
[object]

var标记=[{“value”:“tag1”},{“value”:“tag2”}];

console.log(“Tags:,Tags);
当您使用
+
操作符创建串联字符串时,会对非字符串部分调用
.toString()
方法将其转换为可读字符串–对于普通对象,此方法返回
[object object]

如果要查看数组的实际内容,请使用:

  • console.log(“tags:,tags);
    (在浏览器控制台中使用时,允许使用“交互式”日志:您可以单击阵列并展开其内容)
  • 或者
    console.log(“tags:+JSON.stringify(tags));
    如果您只想查看打印的数组内容(使用
    JSON.stringify(tags,null,2)
    进行双空格缩进的漂亮打印)

'+'将对象字符串化,从而产生[object object],在将console与'+'一起使用之前,需要使用JSON.stringify()将对象转换为JSON字符串,否则使用console与“,”

使用
+
操作符将对象与字符串连接就像调用
'string'+obj.toString()
,这
({}).toString()
[object object]
.Js尝试将操作中的第二项转换为第一项的类型,即字符串,因此您看到的不是数组的内容,而是
[object object]
。如果要记录它,请执行以下操作-console.log({tags:tags})而不是console.log(“tags:+tags”)。在本例中,它试图向对象添加字符串,从而产生意外结果。
console.log("tags: ", tags);