随机留言的实现

问题背景

对于一个给定的数组,如何随机获得它的元素

解决方案

随机获取数组一个元素

language 复制代码
var items = ['1','2','4','5','6','7','8','9','10'];
var item = items[Math.floor(Math.random()*items.length)];

解释:

Math.random()返回0到1之间的一个伪随机数,可能等于0,但是一定小于1

Math.floor方法返回小于参数值的最大整数(地板值)

结合起来:

随机获取一个0-1之间的小数, 然后乘以自身长度, 一定是一个大于等于0 小于自身长度的一个数. 如上面 长度为10, 则获取的一个随机数就为0-10之间的一个数数组的下标.

最后根据下标获取数组元素值即可

随机获取几个元素

javascript 复制代码
function getRandomArrayElements(arr, count) {
    var shuffled = arr.slice(0), i = arr.length, min = i - count, temp, index;  //只是声明变量的方式, 也可以分开写
    while (i-- > min) {
        //console.log(i);
        index = Math.floor((i + 1) * Math.random()); //这里的+1 是因为上面i--的操作  所以要加回来
        temp = shuffled[index];  //即值交换
        shuffled[index] = shuffled[i]; 
        shuffled[i] = temp;
        //console.log(shuffled);
    }
    return shuffled.slice(min);
}


var items = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'];
console.log( getRandomArrayElements(items, 4) );

随机一个留言

javascript 复制代码
<script>
  export default{
    data () {
      return {
        redEnvelope: {
          rewardMessage: '乐知乐享,同心共济',
          rewardNum: null,
          rewardPoint: null
        },
      }
    },
    methods: {
      randomMessage(){
        let _message = this.redEnvelope.rewardMessage //默认显示乐知乐享,同心共济
        let messageList = ['乐知乐享,同心共济', '大吉大利,永不宕机', '一起分享,共同学习', '节日快乐', '欢迎来到墨天轮']
        let _newMessage = messageList[Math.floor((Math.random()*messageList.length))]
        if(_message == _newMessage) _newMessage = messageList[Math.floor((Math.random()*messageList.length))] //如果随机的留言和上次的一样,再次随机一个留言
        this.redEnvelope.message = _newMessage
      },
    }
  }
</script>
相关推荐
vx_Biye_Design13 分钟前
springboot游泳馆系统93765-计算机课程设计、毕业设计
java·javascript·spring boot·后端·python·spring·课程设计
名字还没想好☜16 分钟前
Java NIO ByteBuffer 实战:flip/clear/compact 三个绕晕人的方法与 position/limit 心智模型
java·开发语言·后端·spring·nio
晴天1621 分钟前
VSCodium 项目介绍
前端·javascript·vscode
世岩清上25 分钟前
展厅数字内容同质化严重,怎样打造专属叙事风格?
大数据·前端·javascript·人工智能·html·音视频·展厅改造
小溪学编程43 分钟前
AQS 原理详解:从 CLH 队列到 ReentrantLock 的实现
java·开发语言
持敬chijing1 小时前
Web前后端开发-JavaScript 入门教程
开发语言·前端·javascript
leoZ2311 小时前
2026-09-10-静态扫描连错三次-用运行环境当裁判
前端·javascript·vue.js·人工智能·opencv·机器学习·数据挖掘
Maxkim1 小时前
我把一个"会自己查资料"的 AI 助手塞进了浏览器侧边栏,开源了
前端·javascript
2601_966949651 小时前
从轮询到策略消费:量化系统如何高效处理五档盘口数据
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
mONESY1 小时前
LangChain 结构化输出进阶:with_structured_output 做了什么,以及它为什么流不起来
javascript