从JSON字符串中随机选择一个单词

时间:2013-10-05 08:32:23

标签: javascript json string

我已经使用JSONP从另一个来源获取数据,该数据返回一个单词列表,随机取出一个用于游戏的单词...我的源代码就是这样;

function processResult(obj) {               
    console.log(obj);
    var blah = JSON.stringify(obj);
    console.log(blah);
}

var jsonp = document.createElement('script');
jsonp.src = 'http://testhangmangame.net76.net?jsonp=processResult';
document.body.appendChild(jsonp);

我很想知道,是否有可能提前从该字符串中提取一个单词!


json返回的示例:

{
    "words": [
        "Finitely",
        "Misleading",
        "Dinning",
        "Energizing",
        "Untruest",
        "Menorah",
        "Ghoulish",
        "Realism",
        "Caliphate",
        "Buttercup",
        "Oratorio",
        "Prefix",
        "Gaming",
        "Preshrunk",
        "Harmed",
        "Loop",
        "Banknote",
        "Doily",
        "Rest of words removed"
    ]
}

这个json包含在processResult( ... );

2 个答案:

答案 0 :(得分:4)

JSONP负责将结果转换为普通的Javascript对象,因此JSON无关紧要。您只需要从对象中获取数组并使用标准惯用法来选择随机元素。

function processResult(obj) {               
    var words = obj.words;
    var random_word =  words[Math.floor(Math.random() * words.length)];
    console.log("The word is: "+random_word);
}

答案 1 :(得分:0)

如果API构建良好且Json响应中的字段返回一个数组:

var arr = json['array_field'];
var random = arr[Math.floor(Math.random() * arr.length)];

如果Json返回一个字符串,你必须首先使它成为一个数组:

var arr = json['string_field'].split(/\W{1,}/); // Split by whitespace
var random = arr[Math.floor(Math.random() * arr.length)];