2012-12-10 174 views
1

我希望從各種來源獲取內容,使用不同的API調用,並將它們全部整理到具有相同格式的對象或數組中。我被javascript數組和對象卡住了,我發現的例子都沒有做我想做的事情。這是我想要存儲的格式。這是僞編碼的我想要什麼例子來實現Javascript數組或對象

var content = new Object(); 
getTweets(); 
getSoundCloud(); 
display(); 


function getTweets() { 

    //first result 
    content.type = "tweet 
    content.text = "the text of the tweet" 
    content.image = "the image from the tweet" 

    return content; 
} 

function getSoundCloud() { 
    //second result 
    content.type = "soundcloud 
    content.text = "the name of the song" 
    content.image = "the image of the song" 

    return content; 
} 


function display() { 
    //for each content 
    { 
     $("#container").append(content.text); 
    } 

} 

由一個函數調用生成的第一個結果,並通過不同的功能調用生成的第二個結果。

我想要這些函數將所有的內容一起添加到同一個格式對象中。一旦對象被填充,我希望用不同的函數迭代它並顯示在屏幕上。

如何製作此物件?我試過了,但數據總是相同的,即用相同的值覆蓋。在PHP中,這將是可能的關聯數組或類似

我想爲每段內容我有一個對象的東西,並且可以循環通過它

content[0].type = "tweet" 
content[1].type = "coundcloud" 

舉例任何建議將是巨大的。

非常感謝

回答

3

當你有很多東西你應該馬上想到

我需要這些東西存放在數組中。

當你的「東西」是複雜和具有各種屬性/狀態,應立即想:

我需要創建一個對象來存儲他們。

...所以這裏最好的是一組對象。每個函數將創建對象並將其添加到content,我們將切換到一個數組:

var content = []; // Array 
getTweets(); 
getSoundCloud(); 
display(); 


function getTweets() { 
    var tweet = {}; // This is an object 

    tweet.type = "tweet"; 
    tweet.text = "The text of the tweet"; 
    tweet.image = "The image of the tweet"; 

    content.push(tweet); // add the object to the array. 
} 

function getSoundCloud() { 
    var soundcloudThing = {}; 

    soundcloudThing.type = "soundcloud" 
    soundcloudThing.text = "the name of the song" 
    soundcloudThing.image = "the image of the song" 

    content.push(soundcloudThing); 
} 

現在,當談到顯示這個內容,因爲有一個數組;在這裏做的明顯的事情是遍歷它迭代;

function display() { 
    for (var i=0;i<content.length;i++) 
    { 
     $("#container").append(content[i].text); 

     // You can also use content[i].image and content[i].type in here 
    } 
} 

注意[]{}literal notation創建數組和對象。它的使用優於new Array()new Object()

0

我在這裏做一個例子:http://jsfiddle.net/pdXsA/2/

var content = []; 
content.push(getTweets()); 
content.push(getSoundCloud()); 
display(); 

function getTweets() { 
    return{ 
     type : "tweet", 
     text : "the text of the tweet", 
     image : "the image from the tweet"      
    }; 
} 

function getSoundCloud() { 
    return{ 
     type : "soundcloud", 
     text : "the name of the song", 
     image : "the image of the song"      
    }; 
} 

function display() { 
    content.forEach(function(item){ 
     $("#container").append(item.text +"<br/>"); 
    }); 
}​ 
0

content應該是對象的數組,每個函數將其對象插入到內容數組:

var content = []; // empty array 
getTweets(); 
getSoundCloud(); 
display(); 


function getTweets() { 
    content.push ({ //first result 
     type: "tweet", 
     text: "the text of the tweet", 
     image: "the image from the tweet" 
    }); 
} 

function getSoundCloud() { 
    content.push ({ //second result 
     type: "soundcloud", 
     text: "the name of the song", 
     image: "the image of the song" 
    }); 
} 


function display() { 
    content.forEach (v) { 
     // code to format the object v appropriately 
     var vtext = v.type + ' : ' + v.text; 
     $("#container").append(vtext); 
    } 

} 
0

其實只是sussed出來像這樣

var content = { 
    text: this.text.linkify().linkuser().linktag(), 
    image: this.profile_image_url, 
    type: 'tweet' 
}; 

arrayContent.push(content); 

我現在可以循環它,每個內容並顯示它!