2012-06-07 143 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 –