Javascript 为什么[{quot;value";:“tag1";}在登录时会变成[object object]?
在node.js服务器上,我有以下代码: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] 为什么会发生这种情况?这会在我的代码中造成问题,因为我正在尝试访问值,但无法访问。当您执行“标
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)
+
操作符将对象与字符串连接就像调用'string'+obj.toString()
,这({}).toString()
是[object object]
.Js尝试将操作中的第二项转换为第一项的类型,即字符串,因此您看到的不是数组的内容,而是[object object]
。如果要记录它,请执行以下操作-console.log({tags:tags})而不是console.log(“tags:+tags”)。在本例中,它试图向对象添加字符串,从而产生意外结果。
console.log("tags: ", tags);