2017-04-03 29 views
0

我的表:https://docs.google.com/spreadsheets/d/1pruXYXrbITR7CoQXZG1I1kyS4DahYBXmGMDEK2T6MpY/edit?usp=sharing從谷歌牀單把JSON數據到一個數組

我使用谷歌牀單JSON數據顯示在我的網站,但我希望把一些數據到陣列,因此不重複本身在網站上。

例如,它是如何顯示的,但我希望能夠爲每個組(zouk,zen ect)創建一個標題,然後將所有成員放在一個標題下。 https://www.kentunion.co.uk/test1/

所以我想找出一些JavaScript,將一個組的所有位置添加到數組中。從這個去:

"Zouk Society" : { 
     "name" : "Zouk Society", 
     "position" : "President", 
     "member" : "Currently Vacant" 
    }, 
    "Zouk Society" : { 
     "name" : "Zouk Society", 
     "position" : "Secretary", 
     "member" : "Currently Vacant" 
    }, 
    "Zouk Society" : { 
     "name" : "Zouk Society", 
     "position" : "Treasurer", 
     "member" : "Currently Vacant" 
    } 

這樣:

"Zouk Society" [{ 
     "position" : "President", 
     "member" : "Currently Vacant" 
    }, 
    { 
     "position" : "Secretary", 
     "member" : "Currently Vacant" 
    }, 
    { 
     "position" : "Treasurer", 
     "member" : "Currently Vacant" 
    } 
] 

我曾嘗試以下JS,但我只是從中得到一個錯誤:

// ID of the Google Spreadsheet 
var spreadsheetID = "1pruXYXrbITR7CoQXZG1I1kyS4DahYBXmGMDEK2T6MpY"; 

// Make sure it is public or set to Anyone with link can view 
var url = "https://spreadsheets.google.com/feeds/list/1pruXYXrbITR7CoQXZG1I1kyS4DahYBXmGMDEK2T6MpY/od6/public/values?alt=json"; 
    $(document).ready(function() { 
     $.getJSON(url, function(data) { 

      var entry = data.feed.entry; 

      $(entry).each(function(){ 
        // Column names are name, age, etc. 
        $('.results').prepend('<h2>'+this.gsx$name.$t+'</h2><p>'+this.gsx$position.$t+'</p><p>'+this.gsx$member.$t+'</p>'); 
      }); 
     }); 

    var grouped = {}; 

     entry.forEach(function (a) { 
      grouped[a.name] = grouped[a.name] || []; 
       grouped[a.name].push({ position: a.position, member: a.member }); 
     }); 
     document.write('<pre>' + JSON.stringify(grouped, 0, 4) + '</pre>'); 

    }); 

這是錯誤,我獲得:

Uncaught ReferenceError: entry is not defined at HTMLDocument. (scripts.js:19)

+0

你能張貼你的錯誤? – rakwaht

+0

Uncaught ReferenceError:在HTMLDocument中沒有定義條目 。 (scripts.js:19) – user3005003

回答

1

您無法訪問回調範圍之外的條目。

做你的分組回調裏面,像這樣:

// ID of the Google Spreadsheet 
var spreadsheetID = "1pruXYXrbITR7CoQXZG1I1kyS4DahYBXmGMDEK2T6MpY"; 

// Make sure it is public or set to Anyone with link can view 
var url = "https://spreadsheets.google.com/feeds/list/1pruXYXrbITR7CoQXZG1I1kyS4DahYBXmGMDEK2T6MpY/od6/public/values?alt=json"; 

$(document).ready(function() { 
    $.getJSON(url, function(data) { 
     var entry = data.feed.entry; 

     $(entry).each(function(){ 
      // Column names are name, age, etc. 
      $('.results').prepend('<h2>'+this.gsx$name.$t+'</h2><p>'+this.gsx$position.$t+'</p><p>'+this.gsx$member.$t+'</p>'); 
     }); 

     var grouped = {}; 

     entry.forEach(function (a) { 
      grouped[a.gsx$name.$t] = grouped[a.gsx$name.$t] || []; 
      grouped[a.gsx$name.$t].push({ position: a.gsx$position.$t, member: a.gsx$member.$t }); 
     }); 

     document.write('<pre>' + JSON.stringify(grouped, 0, 4) + '</pre>'); 
    }); 
}); 
+0

這將產生我的網頁上公佈這些結果:{ 「未定義」: {}, {}, {}, {}, {}, {}, {}, {}, { }, {} ect – user3005003

+0

好吧,我明白了。我做了一個改變,看看編輯。這是你的預期嗎? – Matansh

+0

是的,謝謝! – user3005003

0

您不能push數據轉化爲對象。您應該將var grouped = {}更改爲var grouped = []。然後,您可以將每個元素推送到此對象數組,並使用此語法grouped[0].position訪問它們。

我不明白你的具體問題,但「對象數組」是你的問題的解決方案。

+0

他/她嘗試推入分組[a.name]中的數組,而不是分組。 數組初始化好(分組[a.name] =分組[a.name] || [];)。 – Matansh