这里总javascript noob。只是试图理解语言。
我正在使用以下代码请求JSON请求:
function request(){
$.ajax({
dataType: "jsonp",
type: 'GET',
url: "getWebsite",
success: function(result){
data = result;
$('.data').text(data);
console.log(data);
}});
get请求返回如下内容:
"items": [
{
"topLevelComment": {
"authorDisplayName": "a"
"textDisplay": "b"
},
{
"topLevelComment": {
"authorDisplayName": "c"
"textDisplay": "d"
}
我想循环通过AuthorDisplayName和textDisplay并随机选择一个。如果我不得不猜测,最好的方法就是将它们放入数组中。我不知道怎么回事。
答案 0 :(得分:1)
var json={
"items": [{
"topLevelComment": {
"authorDisplayName": "a",
"textDisplay": "b"
}
}, {
"topLevelComment": {
"authorDisplayName": "c",
"textDisplay": "d"
}
}, {
"topLevelComment": {
"authorDisplayName": "e",
"textDisplay": "f"
}
}, {
"topLevelComment": {
"authorDisplayName": "g",
"textDisplay": "h"
}
}]
};
$("input:button").on("click",function(){
selectRand = Math.floor((Math.random() * json.items.length))
var r=json.items[selectRand].topLevelComment.textDisplay;
console.log(r);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="button" value="selectRand"/>
答案 1 :(得分:0)
items
已经是一个数组。所以你要做到以下几点:
将结果解析为json(仅当返回字符串时)
items = JSON.parse(items)
获取随机索引
let index = Math.floor((Math.random() * items.length))
获取随机数据
let authorDisplayName = items[index].topLevelComment.authorDisplayName
let textDisplay = items[index].topLevelComment.textDisplay
答案 2 :(得分:0)
据我所知,你试图从items数组中显示一个随机对象?
items
变量已经是一个数组,所以你不需要创建一个。要获取数组的随机元素,可以使用以下代码:
var item = result.items[Math.floor(Math.random()*items.length)];
我不确定items数组的确切位置,让我们说它是结果的根。您可能还需要通过方法JSON.parse()
运行数组,使其成为有效的JavaScript对象。
然后要获取文本和显示名称,您可以执行此操作:
var authour = item.topLevelComment.authorDisplayName;
var text = item.topLevelComment.textDisplay;
答案 3 :(得分:0)
如果您的数据已经是对象格式,并且您只想从随机选择中获取数据。然后,您不必循环访问所有数据。只需从总数据中随机选择一个索引。
function request(){
$.ajax({
dataType: "jsonp",
type: 'GET',
url: "getWebsite",
success: function(result){
data = result;
$('.data').text(data);
console.log(data);
var randomIndex = Math.floor((Math.random() * data.items.length));
console.log("Selected data authorDisplayName: " + data.items[randomIndex].topLevelComment.authorDisplayName);
console.log("Selected data textDisplay: " + data.items[randomIndex].topLevelComment.textDisplay);
}
});
}