题目要求:实现求和、获取时间、笑话、抽奖四个功能,当⽤户使⽤完⼀个功能后,继续提示⽤户使⽤该程序,当⽤户点击取消或者输⼊q的时候退出程序(退出循环)
1、建造框架
let running = true;
while (running) {
let msg = prompt('您好,我是您的私⼈助理 siri \n' +
'请输⼊编号或《关键词》选择功能,按q退出 \n' +
'1. 计算《总和》\n' +
'2. 获取《时间》\n' +
'3. 讲个《笑话》\n' +
'4. 来个《抽奖》'
);
switch (msg) {
case '1':
case '总和':
console.log('计算总和');
break;
case '2':
case '时间':
console.log('获取当前时间');
break;
case '3':
case '笑话':
console.log('随机讲笑话');
break;
case '4':
case '抽奖':
console.log('随机抽奖');
break;
case 'q':
case null:
running = false;
break;
default:
console.log('您说什么,我听不太懂');
break;
}
}
再分别实现各自的功能
2、求和
要实现这种⽅式,⾸先要解决的问题是把⽤户输⼊的 "1,2,3,4,5,6" 使⽤ , 切割成数组。
JavaScript 中提供了⼀个分割字符串的⽅法:let arr = 字符串.split(分隔符);
let str = prompt('输入数字,用逗号分隔,如“1,2,3,4”');
//以逗号为分割线,取数字存到数组中
let arr = str.split(',');
let sum = 0;
for (let i = 0; i < arr.length; i++) {
//将字符串的数字进行转化,防止数字求和变成字符串拼接
sum += parseFloat(arr[i]);
}
alert('求和的结果是:' + sum);
3、时间
当⽤户输⼊ 2 时,要获取当前的⽇期和时间,格式为:2021-10-24 12:00:00
在 JavaScript 中要获取系统当前的时间,需要使⽤到 JavaScript 提供的 Date ⽇期对象。
let date = new Date();
let year = date.getFullYear();
let month = date.getMonth() + 1;//月份是从0开始的
let day = date.getDate();
let hour = date.getHours();
let minute = date.getMinutes();
let second = date.getSeconds();
//不够两位前面补0
month = month > 10 ? month : '0' + month;
hour = hour > 10 ? hour : '0' + hour;
minute = minute > 10 ? minute : '0' + minute;
second = second > 10 ? second : '0' + second;
let time = year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second;
alert(time);
4、笑话
随机⽣成笑话,我们需要准备⼀个数组存储所有的笑话,笑话数组有了之后,接下来需要随机⽣成数组中的⼀个索引值,索引值必须是合法范围 [0, jokes.length)。我们先来学习如何⽣成随机数字
这⾥需要⽤到 JavaScript 中提供的⽣成随机数的功能,Math.random(),⽣成的随机数范围是[0, 1)之间
随机⽣成指定整数范围的数字,⽣成的随机数*10,然后取整,范围是[0, 10)
let jokes = [
'每天把牢骚拿出来晒晒太阳,心情就不会缺钙',
'明明是傻,却说是逆向思维。',
'第八套广播体操,我练了三年了,什么时候能打通任督二脉啊。',
'“师傅,教我分身术吧。”“首先,你要有把电锯。。。”',
'a:你说我这穷日子过到啥时侯是个头啊?b:那得看你能活多久了。',
'每次看古装片听人说:愿闻其翔,都觉得怪怪的。。。',
'“我有一个看家本领。” “什么?” “看家。”',
'今天客户来银行取钱,坐下一句话说的我石化了:“你好,我死期到了。”',
'做人最失败的莫过于唐僧,身边的人不管是敌是友都想送你上西天。',
'那天在家发呆呢,突然飞来一只小鸟儿,撞窗户上了,我想:上帝在玩“愤怒的小鸟”吧,可是,不对碍…上帝觉得我是猪???'
];
//Math.length 生成一个[0,1)之间的随机小数
let i = parseInt(Math.random() * jokes.length);
alert(jokes[i]);
5、抽奖
随机⽣成1/2/3/4/5/6,如果⽣成的是1提示中⼀等奖,2提示中⼆等奖,3提示中三等奖,其它值提示未中奖。
const idx = parseInt(Math.random() * 6 + 1)
switch (idx) {
case 1:
alert('恭喜您抽中⼀等奖,奖品请找⽼师领取');
break;
case 2:
alert('恭喜您抽中⼆等奖,奖品请找⽼师领取');
break;
case 3:
alert('恭喜您抽中三等奖,奖品请找⽼师领取');
break;
default:
alert('很遗憾您未抽中奖品');
break;
}
最后总代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>仿siri练习</title>
</head>
<body>
<script>
let flag = true;
while (flag) {
let input = prompt('您好,我是您的私人助理siri \n请输入标号或《关键词》选择功能,按q退出 \n1.计算《总和》 \n2.获取《时间》\n3.讲个《笑话》 \n4.来个《抽奖》');
console.log(input);
switch (input) {
case '1':
case '总和':
let str = prompt('输入数字,用逗号分隔,如“1,2,3,4”');
//以逗号为分割线,取数字存到数组中
let arr = str.split(',');
let sum = 0;
for (let i = 0; i < arr.length; i++) {
//将字符串的数字进行转化,防止数字求和变成字符串拼接
sum += parseFloat(arr[i]);
}
alert('求和的结果是:' + sum);
break;
case '2':
case '时间':
let date = new Date();
let year = date.getFullYear();
let month = date.getMonth() + 1;//月份是从0开始的
let day = date.getDate();
let hour = date.getHours();
let minute = date.getMinutes();
let second = date.getSeconds();
//不够两位前面补0
month = month > 10 ? month : '0' + month;
hour = hour > 10 ? hour : '0' + hour;
minute = minute > 10 ? minute : '0' + minute;
second = second > 10 ? second : '0' + second;
let time = year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second;
alert(time);
break;
case '3':
case '笑话':
let jokes = [
'每天把牢骚拿出来晒晒太阳,心情就不会缺钙',
'明明是傻,却说是逆向思维。',
'第八套广播体操,我练了三年了,什么时候能打通任督二脉啊。',
'“师傅,教我分身术吧。”“首先,你要有把电锯。。。”',
'a:你说我这穷日子过到啥时侯是个头啊?b:那得看你能活多久了。',
'每次看古装片听人说:愿闻其翔,都觉得怪怪的。。。',
'“我有一个看家本领。” “什么?” “看家。”',
'今天客户来银行取钱,坐下一句话说的我石化了:“你好,我死期到了。”',
'做人最失败的莫过于唐僧,身边的人不管是敌是友都想送你上西天。',
'那天在家发呆呢,突然飞来一只小鸟儿,撞窗户上了,我想:上帝在玩“愤怒的小鸟”吧,可是,不对碍…上帝觉得我是猪???'
];
//Math.length 生成一个[0,1)之间的随机小数
let i = parseInt(Math.random() * jokes.length);
alert(jokes[i]);
break;
case '4':
case '抽奖':
const idx = parseInt(Math.random() * 6 + 1)
switch (idx) {
case 1:
alert('恭喜您抽中⼀等奖,奖品请找⽼师领取');
break;
case 2:
alert('恭喜您抽中⼆等奖,奖品请找⽼师领取');
break;
case 3:
alert('恭喜您抽中三等奖,奖品请找⽼师领取');
break;
default:
alert('很遗憾您未抽中奖品');
break;
}
case 'q':
case null:
flag = false;
}
}
</script>
</body>
</html>