消防安全知识答题活动小程序v4.2.0v4.2.01)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.01)支持多选题

2)支持填空题

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