定义一个随机数函数

        function rand(offset) {
  var num = Math.random() * offset; //生成浮点类型的随机数
  return Math.floor(num); //对结果取整并返回
}
      

运行一下

定义一个基于基础温度+偏移量的生成随机温度的函数

        function generate_temperature(_base, _offset) {
  //基础温度 + 随机 0 - offset(偏移量)
  return _base + rand(_offset);
}
      

运行一下

定义一个生成随机风向的函数

        function generate_wind() {
  var direction = ["东", "南", "西", "北"]; //定义方向数组
  var d1 = direction[rand(4)]; //获取第一个随机方向
  var d2 = direction[rand(4)]; //获取第二个随机方向
  if (d1 == d2) d2 = ""; //如果两个方向一至,则只显示一次,避免出现“东东风”,“西西风”之类的
  return d1 + d2 + "风" + (1 + rand(4)) + "级"; //随机生成 1 - 4 级
}
      

运行一下

定义一个生成随机天气的函数

        function generate_style() {
  return ["晴天", "多云", "阵雨", "小雨"][rand(4)];
}
      

运行一下

定义城市列表

        var cityArr = ["长沙", "北京", "上海", "广州", "深圳"];        
      

定义日期列表

        var dateArr = [];
var startday = 14;
for (var i = 0; i < 15; i++) {
  dateArr.push("2025-11-" + (startday + i));
}
      

运行一下

生成数据

        var data = []; //定义空列表
//遍历日期列表
dateArr.forEach((date) => {
  //遍历城市列表
  cityArr.forEach((city) => {
    var d = {
      date: date, //赋值日期
      city: city, //赋值城市
      style: generate_style(), //生成天气
      wind: generate_wind(), //生成气向
      temperature: 0, //默认温度为零
      rain: 0, //默认降水量为零
      ultraviolet_ray: 1 + rand(3), //随机生成 1-4 紫外线级数
    };
    //如果为降雨天气,生成降水量
    if (d.style == "阵雨") d.rain = (rand(30) + 20) / 100; //阵雨降水量 0.2mm - 0.5mm 之间
    //根据不同的城市地理位置生成温度
    switch (city) {
      case "长沙":
        d.temperature = generate_temperature(14, 5);
        break;
      case "北京":
        d.temperature = generate_temperature(10, 3);
        break;
      case "上海":
        d.temperature = generate_temperature(18, 3);
        break;
      case "广州":
        d.temperature = generate_temperature(25, 5);
        break;
      case "深圳":
        d.temperature = generate_temperature(21, 5);
        break;
    }
    data.push(d); //将生成的数据添加到列表
  });
      

运行一下

天气查询

        function search(city, date) {
  //获取天气数据
  var data = chaosuan.weather.data;
  //定义一个返回结果,默认为查询失败
  var result = { success: false, weather: {} };
  //遍历天气数据
  for (var i = 0; i < data.length; i++) {
    var weather = data[i];
    //匹配日期和城市
    if (weather.date == date && weather.city == city) {
      //保存匹配结果
      result.weather = weather;
      result.success = true;
      //中断遍历
      break;
    }
  }
  //返回查询结果
  return result;
 }
      

运行一下

下载本示例:

026s.com/weather.zip