0

たくさんの要素をループして、選択した値をテーブルに入れるのに役立つ解決策を見つけるのに苦労しています。いくつかの値を引き出すことができましたが、メソッドは動的ではありません。

次に例を示します。

var Table = {
    "credit": {
        "link": "site link", 
        "logoUrl": "logo url", 
        "message": "message"
    }, 
    "groups": [
        {
            "labels": [
                {
                    "name": "Western Conference", 
                    "type": "conference"
                }, 
                {
                    "name": "Central Division", 
                    "type": "division"
                }
            ], 
            "standings": [
                {
                    "stats": [
                        {
                            "name": "gp", 
                            "value": 20
                        }, 
                        {
                            "name": "w", 
                            "value": 17
                        }, 
                        {
                            "name": "l", 
                            "value": 0
                        }, 
                        {
                            "name": "gf", 
                            "value": 64
                        }, 
                        {
                            "name": "ga", 
                            "value": 37
                        }, 
                        {
                            "name": "gd", 
                            "value": 27
                        }, 
                        {
                            "name": "pts", 
                            "value": 37
                        }
                    ], 
                    "team": {
                        "id": 12345, 
                        "link": "team link", 
                        "name": "team name", 
                        "shortName": "team"
                    }
                }, 

これが要素の構造です。これまで私はこれを使用しました:

document.getElementById("sGamesPlayed").innerHTML=Table.groups[0].standings[0].stats[0].value;

値を撤回します。ただし、チーム、統計、部門がもっとあるので、要素を調べて動的テーブルに入れるには、ある種のループが必要になります。

4

3 に答える 3

0

あなたの質問は、配列の値をフィルタリングすることについてだと思いますstandings。これを行うには、jQuery grep関数を使用できます(jQueryを使用する場合)。

たとえば、次のように書くことができます。

var arr = $.grep(Table.groups[0].standings[0].stats, function(d){return d.value>25})

どちらが

arr = [{"name": "gf","value": 64}, {"name": "ga", "value": 37},{"name": "gd", "value": 27},{"name": "pts", "value": 37}]

これが意図したものではない場合は、必要なもののサンプルを使用してjsFiddleを作成してください。

于 2013-03-26T03:19:15.777 に答える
0

http://underscorejs.org/をご覧になることをお勧めします。

一連のユーティリティ関数を提供します。たとえば、_。each()はJSONプロパティをループするのに役立ちます。

与えたサンプルオブジェクトの場合(最後に欠落している角かっこを完成させた後)、

_.each(Table.groups[0].standings[0].stats, function(stats){
    console.log(stats['name']+","+stats['value'])
})

私に与える:

gp,20
w,17
l,0
gf,64
ga,37
gd,27
pts,37

仕組みは、最初の引数として必要なオブジェクトを指定し、2番目の引数として指定した関数が最初の引数の各要素で呼び出されることです(リストであると想定)。

また、console.logを配置したテーブルをレンダリングするために使用できるアンダースコアテンプレートを確認することをお勧めします。

  1. http://net.tutsplus.com/tutorials/javascript-ajax/getting-cozy-with-underscore-js/
  2. http://scriptble.com/2011/01/28/underscore-js-templates/
于 2013-03-26T03:22:25.720 に答える
0

結果をどのように処理するかに応じて、次のようなスキームを使用してオブジェクトを調べることができます。

var groups, standings, stats, value;
groups = Table.groups;

// Do stuff with groups

for (var i=0, iLen=groups.length; i<iLen; i++) {
  standings = groups[i].standings;

  // Do stuff with standings

  for (var j=0, jLen=standings.length; j<jLen; j++) {
    stats = standings[j];

    // Do stuff with stats

    for (var k=0, kLen=stats.length; k<kLen; k++) {
      value = stats[k].value;

      // Do stuff with value

    }
  }
}

もちろん、データの目的、全体的な構造、またはデータをどのように表示するかはわかりません。しかし、深くネストされたデータがある場合、できることはそれを掘り下げることだけです。再帰関数を記述できる場合もありますが、データ構造が複雑な場合、保守が非常に困難になる可能性もあります。

于 2013-03-26T05:42:02.453 に答える