【问题标题】:Send array value on Javascript but it show as [object Object]在 Javascript 上发送数组值,但它显示为 [object Object]
【发布时间】:2017-10-09 01:43:54
【问题描述】:

我从数据库中计算结果的数量并作为“TotalItems”发送

mysql_crawl.query('SELECT COUNT(*) FROM `catalogsearch_fulltext` WHERE MATCH(data_index) AGAINST("'+n+'") ', function(error, count) {
    var r = count[0];
    var totalItems = r,
    res.render('result.html', {
                totalItems: totalItems
                })
    });

我尝试在 r 上运行 console.log,结果是

RowDataPacket { 'COUNT(*)': 25 }

但是当我在 javascript 上运行 时,它显示为

[object Object]

如何将对象显示为数字?

【问题讨论】:

标签: javascript angularjs arrays node.js express


【解决方案1】:

totalItems 是对象,你可以通过totalItems['COUNT(*)']访问它的值

【讨论】:

    【解决方案2】:

    告诉模板引擎渲染一个对象会将对象转换成一个字符串。这是通过查看对象来完成的,看看它是否实现了toString() 方法,如果没有,则遍历对象的原型链直到找到一个。

    在您的示例中,最接近的toString 位于顶级原语Object。这个实现只输出[object Object]。有很好的信息是on MDN

    您可以实现自己的toString,甚至可以将count 对象包装在具有名称和自定义toString 的自定义对象中。但是在您的情况下,您获得了一个通用对象,并且(大概)不在更多面向对象的设计模式中抽象代码的级别。在这种情况下,使用JSON.stringify 包装您的模板代码使用会更容易,这会将任何对象序列化为包含开发人员可读的 JSON 数据的字符串:

    <% JSON.stringify(totalItems, null, 2) %>
    

    【讨论】:

      【解决方案3】:

      [object Object] 来自.toString() 函数。示例:{ a: 1 }.toString()

      需要将其封装在JSON.stringify(...)中,例如:JSON.stringify({ a: 1 }) => { "a": 1 }

      【讨论】:

        【解决方案4】:

        要完整打印ObjectArray,您可以使用:

        JSON.stringify(obj, null, 4);
        

        这会将给定对象的String 表示形式返回为树。

        例如:

        {a: 1, b: 2, c: {d: 4}}
        

        变成:

        {
            "a": 1,
            "b": 2,
            "c": {
                "d": 4
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-12
          • 2021-06-19
          • 2020-04-08
          • 1970-01-01
          • 2022-10-24
          相关资源
          最近更新 更多