首页 > 解决方案 > 如何在 JSON 索引调用中使用变量中的随机数?

问题描述

我正在使用来自包含大约 100 个图像的 JSON 的图像 URL 创建幻灯片。每次页面加载时,我只想为幻灯片选择 5 个随机图像。html 在加载到主页上的 EJS 文件中的样式标记内设置样式。如何让 JSON 索引调用采用 1-100 范围内的随机数?

这是我的 app.js 文件,(我正在使用 express):

var express = require("express");
var app = express();
var request = require("request")
app.set("view engine", "ejs")

app.get("/results", function(req, res){
    res.render("search")
});

app.get("/", function(req, res){
    
    request('https://www.reddit.com/r/pics.api', function (error, response, body){
        if(!error && response.statusCode == 200) {
            var data = JSON.parse(body)
            var num = Math.floor(Math.random() * 101)
            res.render("fullscreen", {data: data, num: num});
            console.log(data["data"]["children"][0]["data"]["url"])
        }   
    });
});

app.listen(3000, function(){
    console.log("Server has started!!!");
});

这是我的样式代码的相关片段:

  .slideshow li:nth-child(1) { 
  background-image: url(<%=data["data"]["children"][num]["data"]["url"] %>); 
}

当我用整数“num”运行我的代码时,它工作得很好,但是当我如上所示运行它时,我得到:“无法读取未定义的属性'数据'”。如何在 JSON 索引调用中使“num”成为随机数?

标签: javascriptnode.jsjsonexpressejs

解决方案


并不总是有 100 个数据项。将此公式用于num

const num = Math.floor(Math.random() * data["data"]["children"].length);

检查这个


推荐阅读