在我的node.js服务器上,我有以下代码:
var tags = [{"value":"tag1"},{"value":"tag2"}];
console.log("tags: " + tags);
我希望控制台这样说:
tags: [{"value":"tag1"},{"value":"tag2"}]
但是得到了这个:
tags: [object Object],[object Object]
为什么会这样?这在我的代码中引起了问题,因为我试图访问这些值,但是不能。
答案 0 :(得分:4)
执行public class StringPrefixedSequenceIdGenerator extends SequenceStyleGenerator {
private String format;
@Override
public Serializable generate(SharedSessionContractImplementor session, Object object) throws HibernateException {
return String.format(format, super.generate(session, object));
}
@Override
public void configure(Type type, Properties params, ServiceRegistry serviceRegistry) throws MappingException {
super.configure(LongType.INSTANCE, params, serviceRegistry);
String valuePrefix = null;
valuePrefix = ConfigurationHelper.getString("valuePrefix", params, "test" );
String numberFormat = ConfigurationHelper.getString("numberFormat", params, "%06d");
format = valuePrefix + numberFormat;
}
}
时,将调用toString
method of objects进行操作。
更改
"tags: " + tags
进入
console.log("tags: " + tags);
以便节点的console.log("tags: ", tags);
函数可以进行自己更有趣的转换。
答案 1 :(得分:4)
您有两个选择:
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));
答案 2 :(得分:1)
如果要串联字符串,也可以使用JSON
正确记录对象。
var tags = [{
"value": "tag1"
}, {
"value": "tag2"
}];
console.log("tags: " + JSON.stringify(tags))
答案 3 :(得分:1)
为什么会这样?
之所以发生这种情况,是因为当您尝试使用+
运算符将任何变量与字符串连接时,javascript会将变量的值转换为字符串。
答案 4 :(得分:1)
使用+
运算符创建串联字符串时,将在非字符串部分调用.toString()
方法以将它们转换为可读字符串–并且此方法返回[object Object]
普通对象。
如果要查看数组的实际内容,请使用:
console.log("tags: ", tags);
(在浏览器控制台中使用时,允许“交互式”日志:您可以单击数组并展开其内容); console.log("tags: " + JSON.stringify(tags));
,如果您只想查看打印的数组的内容(使用JSON.stringify(tags, null, 2)
进行2空格缩进的漂亮打印)。答案 5 :(得分:1)
'+'对对象进行字符串化,从而导致[object Object],在将控制台与'+'一起使用之前,需要使用JSON.stringify()将对象转换为JSON字符串。使用带有“,”的控制台。