1

さまざまな API 呼び出しを使用してさまざまなソースからコンテンツを取得し、それらすべてを同じ形式のオブジェクトまたは配列に照合したいと考えています。私は 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);
    }

}

最初の結果は 1 つの関数呼び出しによって生成され、2 番目の結果は別の関数呼び出しによって生成されます。

これらの関数で、すべてのコンテンツを同じフォーマット オブジェクトにまとめて追加したいと考えています。オブジェクトにデータが入力されたら、別の関数で反復処理して画面に表示したいと考えています。

このオブジェクトを作成するにはどうすればよいですか? 試してみましたが、データは常に同じです。つまり、同じ値で上書きされます。PHPでは、これはおそらく連想配列またはそのようなものになります

私が持っているコンテンツの各部分のオブジェクトが必要で、それをループすることができます

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

例を含む提案は素晴らしいでしょう。

どうもありがとう

4

4 に答える 4

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
    }
}

[]and{}は、配列とオブジェクトを作成するためのリテラル表記であることに注意してください。new Array()その使用は、およびよりも優先されnew Object()ます。

于 2012-12-10T11:13:06.477 に答える
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/>");
    });
}​
于 2012-12-10T11:14:33.683 に答える
0

contentオブジェクトの配列である必要があり、各関数はそのオブジェクトを 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);
    }

}
于 2012-12-10T11:15:40.703 に答える
0

実際、このようにそれを調べただけです

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

arrayContent.push(content);

これで、各コンテンツをループして表示できるようになりました。

于 2012-12-10T11:18:08.850 に答える