2015-05-08 35 views
0

我正在使用jqCloud插件來生成文字雲。該腳本依賴於json以特定模式格式化。我試圖讓var msg解析出的JSON就像是在var word_arrayobj格式化爲json使用jquery

$(function() { 
     var count = 3; 
     $.wordStats.computeTopWords(count, $('body')); 
     var msg = 'Top words:\n'; 
     for (var i = 0, j = $.wordStats.topWords.length; i < j && i <= count; i++) { 
      msg += '\n' + $.wordStats.topWords[i].substring(1) + ': ' + $.wordStats.topWeights[i]; 
     } 
     console.log(msg); 
     //this is what gets printed in the console 
     //Top words: 
     //bag: 46 
     //tote: 30 
     //ugh: 30 

     $.wordStats.clear(); 

     // I am trying to get var msg to spit out json 
     // that is formatted like this 

var word_array = [{ 
       text: "Lorem", 
       weight: 15 
      }, { 
       text: "Ipsum", 
       weight: 9, 
       link: "http://jquery.com/" 
      }, { 
       text: "Dolor", 
       weight: 6, 
       html: { 
        title: "I can haz any html attribute" 
       } 
      } 
      // ...as many words as you want 
     ]; 
     $('#example').jQCloud(word_array); 

回答

1

可以構造一個對象,然後它字符串化雖然你也許不需要並可以只給對象馬上到jQCloud。

var json_obj = []; 
    for (var i = 0, j = $.wordStats.topWords.length; i < j && i <= count; i++) { 
     var w = {}; 
     w.text = $.wordStats.topWords[i].substring(1); 
     w.weight = $.wordStats.topWeights[i]; 
     json_obj.push(w); 
    } 
    var msg = JSON.stringify(json_obj); 
+0

謝謝,這讓我更加接近,但我現在得到錯誤'未捕獲TypeError:不能分配給只讀屬性'重量'['似乎是無法鑽入陣列並將前括號解釋爲第一個對象。 – ndesign11

+0

將對象提供給jqcloud時發生錯誤? – kwangsa

+0

Per charlietfl的評論我將'$ .wordStats.clear();'移到底部,現在可以工作。謝謝大家!我upvoted charlietfl評論,但選擇了這個答案,以避免手動創建json。 – ndesign11

2

您正在手動創建字符串,它們對嘗試滿足輸出需求沒有任何好處。

您正在查找的數據結構是一組對象。這張地圖應該給你你需要的東西

var word_array= $.wordStats.topWords.map(function(item, index){ 
    return { text: item.substring(1) , weight: $.wordStats.topWeights[index] }; 
}); 

$('#example').jQCloud(word_array); 

提示:從來沒有嘗試手動創建JSON ...這是非常容易出錯的。創建數組和/或對象,如果你真的需要這樣做,那麼JSON將轉換整個結構。在這種情況下,你需要一個實際的數組... ...不是JSON

+0

感謝您手動創建json的提示,很高興知道!我試過你的代碼片段,並在控制檯收到這個錯誤。 '未捕獲的類型錯誤:無法讀取屬性'地圖'null' – ndesign11

+1

你把這個放在你的'for'循環的位置和'clear()'之前。瞭解該錯誤來自哪個行以及哪個文件也很重要。可能是下一個插件或此代碼或? – charlietfl