消防安全知识答题活动小程序v4.2.0
v4.2.0
1)JavaScript-数组乱序
数组乱序在实际开发过程中是可能碰到的,比如消防安全知识答题活动小程序中实现乱序抽题或者选项乱序。
我们一开始可能会想到利用数组的sort方法,判断随机出来的0-1的值与0.5的大小,实现排序。该方法实现如下:
var arr = [1, 2, 3, 4, 5, 6];
arr.sort(function(){
    return Math.random() - 0.5;
});
console.log(arr)上面的实现方法看起来很完美地实现了乱序的需求,但实际的效果如何我们还是要进行测试。
但要实现真正意义上的乱序,这就要提到经典的洗牌算法Fisher–Yates_shuffle。简单的说:就是随机抽一个放到最后。把剩余的数继续抽,继续放到次后......依次执行。
function shuffle(array) {
	var j, x, i;
	for (i = array.length; i; i--) {
		j = Math.floor(Math.random() * i);
		x = array[i - 1];
		array[i - 1] = array[j];
		array[j] = x;
	}
	return array;
}2)实现选项乱序
按照这个思路和技术方案,先写一段功能代码实现看看,测试调试一下。
js代码:
onLoad: function (options) {
    // ......省略
    let count = this.generateArray(0, this.data.questionList.length - 1); 
    this.setData({
      shuffleIndex: this.shuffle(count).slice(0, 10) // 生成随机题序并进行截取
    })
  },
  /*
  * 数组乱序/洗牌
  */
  shuffle: function (arr) {
    var j, x, i;
    for (i = array.length; i; i--) {
      j = Math.floor(Math.random() * i);
      x = array[i - 1];
      array[i - 1] = array[j];
      array[j] = x;
    }
    return array;
  },
  /**
   * 生成一个从 start 到 end 的连续数组
   */
  generateArray: function (start, end) {
    return Array.from(new Array(end + 1).keys()).slice(start)
  },v4.1.0
1)支持多选题

2)支持填空题

v3.0.0
1)升级功能:
- 答题页、结果页界面,增加展示微信头像和昵称栏目√
 - 由仅支持单选,升级为支持单选、判断、多选题型 √
 - 排行榜页排名机制,优化为取个人最佳成绩进行排名√
 - 各界面及功能一些小优化√
 
2)拓展功能:
- 注册登录页 √
 - 错题集 √
 - 题库学习 √
 - 查看用户的答题成绩以及答题情况-管理员 √
 - 查看所有用户的答题记录-管理员 √
 - 后台题库管理系统-管理员 √
 - 题目增删查改-管理员 √
 
3)基于v2.0拓展升级:
- 排行榜页
 - 活动规则页
 - 答题记录页
 - 首页、答题页、结果页
 - 微信授权登录
 - 获取微信头像和昵称等
 - 实现页面间跳转功能
 - 实现转发分享答题成绩功能
 - 题库随机抽题
 - 查询历史成绩
 - 实现用云开发实现查询题库功能
 - 实现动态题目数据绑定
 - 答题交互逻辑
 - 切换下一题
 - 系统自动判分
 - 提交答卷保存到云数据库集合
 - 答题结果页从云数据库查询答题成绩
 - 题库学习
 - 注册登录页
 - 支持单选、判断题型
 - 错题集
 - 查看用户的答题成绩以及答题情况-管理员
 - 查看所有用户的答题记录-管理员
 - 后台管理-管理员
 - 后台数据监控-管理员
 
v2.0.0
- 活动规则页
 - 排行榜页
 - 答题记录页
 - 题库随机抽题
 - 微信授权登录
 - 获取微信头像和昵称等
 - 首页、答题页、结果页
 - 实现页面间跳转功能
 - 实现转发分享答题成绩功能
 - 实现用云开发实现查询题库功能
 - 实现动态题目数据绑定
 - 答题交互逻辑
 - 切换下一题
 - 系统自动判分
 - 提交答卷保存到云数据库集合
 - 查询历史成绩
 - 答题结果页从云数据库查询答题成绩
 










