0

您好,我想将一些值推送到数组中,但是当我提醒该数组时,它会显示 [object,object],[object,object],[object,object],[object,object]

有谁知道问题是什么?

这是代码:

    $(document).ready(function() {
    $(":button").click(function(event){
     var value = $('#box').val();
    if (value==""){
        return false;
        }
       else{$.getJSON("http://search.twitter.com/search.json?callback=?&q=value",
        function(data){
            var array=[];
            $.each(data.results, function(i, item){
                var user=item.from_user;
                var created_at=item.created_at
                array.push({date:'created_at',username:'user'});
            });alert(array);
            });
        }
      });});
4

3 回答 3

0

没有问题。

当您警告一个对象({date:'created_at',username:'user'}将创建)时,它将被字符串化为"[object object]". (您可以通过覆盖toString对象的功能来更改它)。

该数组确实包含对象。

(好的,从技术上讲存在问题,但您描述的症状与它无关,您放入对象的值是字符串文字而不是变量,您不应该引用它们)。

于 2012-07-27T10:34:22.000 回答
0

首先,我在您的代码中发现了一个小错误。当您创建要推入数组的对象时,您不使用值,而是使用固定字符串(以 upticks 为单位)。您应该将该行更改为此版本:

array.push({date:created_at, username:user});   

如果您尝试可视化内部状态(调试信息),那么 usingalert()只会提供较差的视觉表示。而不是alert()你可以使用console.log()

此语句在控制台中创建输出。不是每个浏览器都支持它。Internet Explorer 具有开发人员工具。您只需按 F12 即可激活它们。但据我所知,IE 的输出非常有限。Firefox 可以使用 Firebug 插件(一个非常强大的工具!)进行扩展。

当您console.log(array)在代码中调用时,Firebug 中的输出会显示如下内容

[Object { date=..., username = ... }, Object { date = ..., username = ...}]

由于console.log()并非所有浏览器都支持,因此您应该在将源发布到生产环境之前删除这些调用。

于 2012-07-27T10:42:25.430 回答
0

您正在使用字符串而不是变量来创建对象:

array.push({date:'created_at',username:'user'});

应该:

array.push({date:created_at,username:user});

或者

array.push({date:item.created_at, username:item.from_user});

创建对象后,使用console.log而不是alert进行调试。Object.toString()由警报调用的默认实现返回[object Object]您所看到的。

于 2012-07-27T10:43:00.543 回答