2012-07-27 120 views
0

你好,我想推入一些值到一个数组,但是当我警告该数组它显示我[对象,对象],[对象,对象],[对象,对象],[对象,对象]从javascript变量创建一个数组

有谁知道这个问题是什么?

下面是代码:

$(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); 
      }); 
     } 
     });}); 

回答

0

没有问题。

当您提醒一个对象(其中{date:'created_at',username:'user'}将创建)时,它将被字符串化为"[object object]"。 (你可以通过覆盖对象的toString函数来改变它)。

该数组包含对象。 (好吧,从技术上说有一个问题,但是你描述的症状与它无关,你输入对象的值是字符串文字而不是变量,你不应该引用它们)。

+0

确定thanks.got现在 – 2012-07-27 10:41:59

+0

你知道如何循环这个对象数组吗? – 2012-07-27 10:54:57

+0

@ user1526175 - 与循环任何数组的方式相同。 http://www.w3.org/wiki/Programming_-_the_real_basics#Loops – Quentin 2012-07-27 10:56:43

0

首先我在代码中发现一个小错误。当你创建对象来推入数组时,你不使用值而是固定字符串(在upticks中)。如果你试图想象的内部状态(调试信息),然后使用alert()只给出较差的视觉表现

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

:你应该改变该行到这个版本。而不是alert()您可以改用console.log()

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

当你调用你的代码console.log(array)在Firebug的输出显示这样的事情

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

由于console.log()不是由你释放你的生产来源之前,你应该删除所有的调用浏览器的支持。

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()实现(通过alert调用)返回您看到的[object Object]

+0

没有人知道如何循环这个对象的数组,甚至让你的生活更轻松推荐我一本书,有这一切..干杯! ! – 2012-07-27 10:57:31