1、使用 vuejs/react 开发一个抽奖程序,奖品为1-9元,最多抽9次,在页面上显示每次抽到的金额,并且每次抽到的金额不可重复 (推荐vuejs,如果已学习了react也可以用 react)
方法一(比较冗余,不推荐):
<template>
<div>
<x-button @click.native="prizeDraw" type="primary">抽奖</x-button>
<h3>结果</h3>
<ul>
<li v-for="(item, key) in nums" :key="key">
<h4>这是第{{key + 1}}次抽奖结果:</h4>{{item}}
</li>
</ul>
</div>
</template>
<script>
import { XButton } from 'vux'
export default {
components: {
XButton
},
data(){
return {
nums: []
}
},
methods: {
prizeDraw(){
if(this.nums.length == 9){
alert('次数已经用完了');
return
}
let bool = false;
const createPrizeNO = () => {
if(bool) return;
var n = parseInt(Math.random()*10);
if(this.nums.indexOf(n) == -1 && n != 0){
this.nums.push(n);
bool = true
}else{
createPrizeNO()
}
}
createPrizeNO();
}
},
}
</script>
<style scoped>
</style>
方法二(推荐):
nums = [1,2,3,4,5,6,7,8,9];
let prizeDraw = () => {
let len = nums.length;
if(len == 0) return;
let n = parseInt(Math.random()*len);
console.log('随机数: ' + n, '金额: ' + this.nums[n], '数组长度: ' + this.nums.length)
nums.splice(n, 1);
},
3、请实现如下sleep函数
function sleep (timeout) {
// TODO: 请实现此方法
}
// 要求支持如下的调用方法
sleep(3000).then(function() {
conosle.log('3s后输出这行字');
})
实现代码
sleep = (time) => {
return new Promise((resolve, reject)=>{
setTimeout(resolve, time)
})
}