2012-06-07 57 views
1

我需要一些帮助(清楚地)我的代码。到目前为止,我能够获得我想要的json数据,但似乎无法将其存储在全局数组中。我的目标是让data.count和data.url在一个这样的数组:将(推?)字符串数据放入数组(或对象) - jQuery

var myHelpfulVariable = [ 
    // e.g. [data.count, '{label:' + data.url + '}'] 
    [3856, {label:'http://www.google.com/'}], 
    [1897, {label:'http://www.yahoo.com/'}], 
    [3870, {label:'http://www.microsoft.com/'}] 
] 

我试着用推送功能都没有用几种不同的方法。下面是获取数据的代码,但它不会尝试将其放入数组中。

有人可以帮忙吗?解释它为什么起作用也是有帮助的。提前致谢!

<script src="jquery.min.js"></script> 
<script> 
$(document).ready(function(){ 

    var getData = [ 
     'http://urls.api.twitter.com/1/urls/count.json?url=http://www.google.com&callback=?', 
     'http://urls.api.twitter.com/1/urls/count.json?url=http://www.yahoo.com/&callback=?', 
     'http://urls.api.twitter.com/1/urls/count.json?url=http://www.microsoft.com&callback=?' 
    ]; 

    $.each(getData, function(i,getValue) { 

     var urlForGetJSONfunction = "'" + getValue + "'"  

     $.getJSON(getValue, function(data) { 
      $('<div></div>').append('<strong>' + data.count + '</strong>' + ' retweets for: ' + '<a href="' + data.url + '">' + data.url + '</a>').appendTo('body') 


      })//ends getJSON 

    })//ends each loop 
}); 
</script> 

回答

1

array.push(obj)确实如您所料,将该对象添加到数组的末尾。在JS数组中的元素不必是同一类型的,所以你可以简单地把你的数据,你得到它,如下所示:

var myHelpfulVariable=[]; 

$.each(getData, function(i,getValue) { 

    var urlForGetJSONfunction = "'" + getValue + "'"; 

    $.getJSON(getValue, function(data) { 
     $('<div></div>').append('<strong>' + data.count + '</strong>' + ' retweets for: ' + '<a href="' + data.url + '">' + data.url + '</a>').appendTo('body'); 

     var pair = []; 
     pair.push(data.count); 
     pair.push({'label':data.url}); 

     myHelpfulVariable.push(pair); 

    });//ends getJSON 

}); 
+0

@alvin'.push()'可以采用多个项目作为参数,并按照指定的顺序添加它们。调用'.push([x,y])'仍然只有一个参数,因为它隐式地创建了一个JS数组,然后将其推入另一个数组中。这仅仅是明确创建'pair'对象的替代方案。 – nbrooks

0

在你的问题的开始,你的myHelpfulVariable被定义为一个数组内部数组包含一个数值的数组和一个对象。如果这就是你真正想要的,那么这里是:

<script src="jquery.min.js"></script> 
<script> 
$(document).ready(function(){ 

    var myHelpfulVariable = []; 

    var getData = [ 
     'http://urls.api.twitter.com/1/urls/count.json?url=http://www.google.com&callback=?', 
     'http://urls.api.twitter.com/1/urls/count.json?url=http://www.yahoo.com/&callback=?', 
     'http://urls.api.twitter.com/1/urls/count.json?url=http://www.microsoft.com&callback=?' 
    ]; 

    $.each(getData, function(i,getValue) { 

     var urlForGetJSONfunction = "'" + getValue + "'"  

     $.getJSON(getValue, function(data) { 

      myHelpfulVariable.push([data.count, { label: data.url } ]); 


      }); //ends getJSON 

    }); //ends each loop 
}); 
</script> 
+0

感谢您的回复,但它似乎没有工作。你确定push可以接受多个值吗? nbrooks的解决方案创建了一个对变量,这似乎是必需的,以便将2个值传递给myHelpfulVariable –