2012-08-16 68 views
0

我想使用getJSON函数抽取数据来填充对象数组。使用从JSON中抽取的循环填充数组

我目前做的目标对象,但知道它会是干净多了一个for循环...

这里的的getJSON:

$.getJSON("http://www.reddit.com/r/pics.json?jsonp=?", 
    function(data) { 

     var imageurl1 = data.data.children[0].data.url; 
     var imagecaption1 = data.data.children[0].data.title;; 
     var commentlink1 = "http://www.reddit.com" + data.data.children[0].data.permalink; 

     var imageurl2 = data.data.children[1].data.url; 
     var imagecaption2 = data.data.children[1].data.title; 
     var commentlink2 = "http://www.reddit.com" + data.data.children[1].data.permalink; 

     } 

而这里的阵列I” m使用该数据对于

var lightboximages = [ 
{ 
    src: imageurl1, 
    caption: imagecaption1, 
    comments: commentlink1 
}, { 
    src: imageurl2, 
    caption: imagecaption2, 
    comments: commentlink2 
}] 

任何与循环的帮助将不胜感激!

+0

(有数组中的10个对象,但放了两个在这里为简便起见)! – 2012-08-16 18:49:18

回答

1

没有测试,但是这是想法:

$.getJSON("http://www.reddit.com/r/pics.json?jsonp=?", 
    function(data) { 
     var lightboxArray = []; 
     for (var i=0; i<data.data.children.length; i++) { 
      var child = data.data.children[i]; 
      var lightboxObj = {"src":child.data.url, "caption":child.data.title, "comments":child.data.permalink}; 
      lightboxArray.push(lightboxObj); 
     } 
     // now call some function to process the array we've built 
    }); 
+0

是的,这将工作 – gmaliar 2012-08-16 18:59:51

+0

宾果......非常感谢。作为一个附录,为了确保只有10个图片拉我添加了一个切片 - data.data.children.slice(0,9).length – 2012-08-16 19:56:47

+0

我认为切片排除最后一个项目,所以你可能想要切片(0,10)。但为了一个更安全的方法,为了确保你对返回数组少于10个项目的返回数组没有问题,我只需将for循环中的测试更改为“i jfrank 2012-08-16 22:01:33