为什么在登录时[{“ value”:“ tag1”}变成[object Object]?

时间:2019-01-02 06:14:17

标签: 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]

为什么会这样?这在我的代码中引起了问题,因为我试图访问这些值,但是不能。

6 个答案:

答案 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字符串。使用带有“,”的控制台。