我正在使用jqCloud插件生成文字云。此脚本依赖于以特定模式格式化的json。我试图将var msg
解析为json,就像在var word_array
$(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);
答案 0 :(得分: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
答案 1 :(得分: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);