js练习题
- 获取1-100之间的所有偶数
<script>
for(var i = 1;i <= 100;i++){
if(i % 2 == 0){
console.log(i);
}
}
for(var a = 2;a <= 100;a+=2){
console.log(a);
}
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 计算1-100的积
<script>
var num = 1;
for(var n = 1; n<= 10;n++){
num *= n;
// (num,n);
}
console.log(num);
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 大马驮2石粮食,中马驮1石粮食,两头小马驮一石粮食,要用100匹马,驮100石粮食,该如何调配?
<script>
var n = 0;
for(var x = 0;x <= 100;x++){
for(var y = 0;y <= 100;y++){
for(var z = 0;z <= 100;z++){
if(x + y + z == 100 && x * 2 + y + z / 2 == 100){
// (`大马${x}匹; 中马${y}匹; 小马${z}匹`);
n++;
}
}
}
}
console.log(n);
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 公园里有一只猴子和一堆桃子,猴子每天吃掉桃子总数的一半,把剩下一半中扔掉一个坏的。到第七天的时候,猴子睁开眼发现只剩下一个桃子。问公园里刚开始有多少个桃子?
<script>
var a = 1;
for(var i = 1;i < 7;i++){
a = (a + 1) * 2;
}
console.log(a);
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1~100之间不能被3整除的数之和
<script>
// 声明一个变量,用于存储所有满足条件的数之和
var sum = 0;
// 1~100 循环 不能被3整除的数 判断条件 之和 运算符
// 找出1~100之间所有的数字
for(var i = 1; i <= 100; i++){
// 判断不能被3整除的数 取模 % i对3取模 为0
if(i % 3 != 0){
// 累加 +=
sum += i; // 当i为1时,sum = 0+1; 当i为2时,sum = 1+2,...
}
}
alert('1~100之间不能被3整除的数之和是' + sum);
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 输入显示的次数,按照你输入的次数显示“班训:快乐学习,认真生活!”,应该怎么写?
<script>
// 输入显示次数 prompt() 需要存储起来你输入的值 循环
// 输入显示次数
var num = prompt('请输入显示次数:') * 1;
// 循环范围 0-num
for(var i = 0; i < num; i ++){
document.write('班训:快乐学习,认真生活!<br />');
}
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
-
循环录入Javascript课的学生成绩,统计分数大于等于 80分的学生比例
分析
- 通过循环,获得分数大于等于80分的学生人数num
- 判断:如果成绩**<80**,不执行num++,直接进入下一次循环
<script>
// 循环 prompt 大于等于 80分 条件 学生比例
// 满足条件的总人数和班级总人数
// 输入班级总人数
var sumNum = prompt('请输入班级总人数:');
// 满足条件的总人数初始化
var num = 0;
// 循环所有学生
for(var i = 0; i < sumNum; i++){
// 大于等于 80分
var score = prompt('请输入第' + (i + 1) +'位同学的成绩:');
if(score >= 80){
num++;
}
}
//输出满足条件的学生的比例
document.write('分数大于等于80分的学生比例是:' + num/sumNum)
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 香蕉3元一个,橘子2元一个,草莓1元一个。现在想用200元买100个水果,在浏览器中列出所有可能性。
<script>
// 第一种方法
// banana 0~100 香蕉的个数,
// orange 0~100 橘子的个数,
// stawberry 0~100 草莓的个数
// banana * 3 + orange * 2 + strawberry * 1 = 200
// banana + orange + strawberry = 100
for(var banana = 0; banana <= 100; banana++){
for(var orange = 0; orange <= 100; orange++){
for(var strawberry = 0; strawberry <= 100; strawberry++){
if(banana * 3 + orange * 2 + strawberry * 1 == 200 && banana + orange + strawberry == 100){
document.write('你可以买' + banana + '个香蕉; ' + orange + '个橘子; ' + strawberry + '个草莓; <br />')
}
}
}
}
/*
第二种方法
banana * 3 + orange * 2 + strawberry * 1 = 200
banana + orange + strawberry = 100
banana * 2 + orange = 100
orange = 100 - banana * 2
banana + 100 - banana * 2 + strawberry = 100
strawberry = banana
banana + strawberry <= 100
banana <= 50 // 循环条件
*/
var orange, strawberry;
// 所有香蕉个数的可能性
for(var banana = 0; banana <= 50; banana++){
orange = 100 - banana * 2;
strawberry = banana;
document.write('你可以买' + banana + '个香蕉; ' + orange + '个橘子; ' + strawberry + '个草莓; <br />')
}
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 会员卡四位数求和, 第一个数字大于0,会员卡四位数求和大于20时将返利50元,否则不返利。
<script>
// 先输入会员卡prompt, 会员卡四位数求和 大于20
// 先输入会员卡号
// 取一个四位数中的个,十,百,千位上面的数字
// var num = 2356;
// var q = parseInt(num / 1000); // 千位
// var b = parseInt((num - q * 1000)/100); // 百位
// var s = parseInt((num - q * 1000 - b * 100) / 10); // 十位
// var g = num - q * 1000 - b * 100 - s * 10; // 各位
// 2356/1000 2.356 parseInt(2.356)
// 2356-q*1000 356
// (g);
// (parseInt((num - q * 1000)/100)); // 期望值是3
var cardNum = prompt('请输入您的会员卡号:');
// 拿到四位数
var q = parseInt(cardNum / 1000); // 千位
var b = parseInt((cardNum - q * 1000)/100); // 百位
var s = parseInt((cardNum - q * 1000 - b * 100) / 10); // 十位
var g = cardNum - q * 1000 - b * 100 - s * 10; // 各位
if(q + b + s + g > 20){
alert('恭喜您,您可以获得50元的返利!');
} else{
alert('很遗憾,您没有满足返利的条件!')
}
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 工资所得税工资超过3000的部分需要缴纳个人所得税,输出税后工资(税率为0.05)。
<script>
// 输入您的工资
var pay = prompt('输入您的工资');
// 判断是否满足交税的条件
if(pay > 3000){
// 计算你拿到的实际工资
// pay - (pay-3000) * 0.05
alert('你拿到的实际工资是:' + (pay - (pay-3000) * 0.05))
}
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 用户购买商品,三个商品中有一个超过50元,或者总价超过100元,即可以打八五折,否则不打折。
<script>
// 三个商品prompt 一个超过50元,或者总价超过100元 条件
// 输入商品
var goods1 = prompt('请输入第一个商品的价格:') * 1;
var goods2 = prompt('请输入第二个商品的价格:') * 1;
var goods3 = prompt('请输入第三个商品的价格:') * 1;
if(goods1 > 50 || goods2 > 50 || goods3 > 50 || goods1 + goods2 + goods3 > 100){
alert('您需要支付:' + (goods1 + goods2 + goods3) * 0.85);
} else{
alert('您需要支付:' + (goods1 + goods2 + goods3));
}
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 计算1!+2!+3!+…+10!的结果.
<script>
// 1! 1 2! 2*1
// 计算阶乘 计算10的阶乘 10! 10 * 9 *8 ..*1 累乘
var sum = 1;
for(var i = 1; i <= 4; i++){
sum *= i; // 1*1 1*1*2*3
}
// 这是所有阶乘之和
var sumNum = 0;
// 循环阶乘累加
for(var i = 1; i <= 10; i++){
// 这是每一个阶乘的值
var sum = 1;
// 各个阶乘相加 当i为1时,1!,当i为2是,2!...
for(var j = 1; j <= i; j++){
sum *= j; // 1*1 1*1*2*3
}
// 累加每个阶乘
sumNum += sum;
}
alert('1!+2!+3!+…+10!的结果是:' + sumNum);
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 输出所有满足下列条件的四位整数。条件:个位数字加百位数字等于千位数字加上十位数字,且该四位数为奇数。
<script>
// 1000 ~ 9999 循环 个位数字加百位数字等于千位数字加上十位数字,且该四位数为奇数 条件
// var q = parseInt(cardNum / 1000); // 千位
// var b = parseInt((cardNum - q * 1000)/100); // 百位
// var s = parseInt((cardNum - q * 1000 - b * 100) / 10); // 十位
// var g = cardNum - q * 1000 - b * 100 - s * 10; // 各位
var q, b, s, g;
document.write('所有满足下列条件的四位整数 <br>')
// // 找到所有四位数 1000 ~ 9999
for(var i = 1000; i <= 9999; i++){
q = parseInt(i / 1000); // 千位
b = parseInt((i - q * 1000)/100); // 百位
s = parseInt((i - q * 1000 - b * 100) / 10); // 十位
g = i - q * 1000 - b * 100 - s * 10; // 各位
// 判断个位数字加百位数字等于千位数字加上十位数字
// 该四位数为奇数
if(g + b == q + s && i % 2 != 0){
document.write(i + '<br />')
}
}
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 求1~10之间的所有偶数和。
<script>
//1~10 循环 偶数 条件
// 存储满足条件的和的变量
var sumNum = 0;
// 循环1~10
for (var i = 1; i <= 10; i++) {
//是否是偶数
if (i % 2 == 0) {
sumNum += i;
}
}
alert('1~10之间的所有偶数和是:' + sumNum);
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 随机输入一个年份,判断是闰年还是平年,并说出今年2月份有多少天?
<script>
// 闰年:它可以被400整除,或者被4整除,同时不能被100整除
var year = prompt('请输入年份');
function isPrimeYear(year) { // year 2019
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
alert(year + '就是闰年');
return true;
} else {
alert(year + '就是平年')
return false;
}
}
// 调用函数
// (isPrimeYear(year));
// 给你一个年份,请你告诉我今年2月份有多少天
// 如果是闰年,2月份就是29天,如果是平年,2月份就是28天
function getDays(year) { // year 2019
if (isPrimeYear(year)) { // year 2019
alert('今年的2月份有29天');
} else {
alert('今年的2月份有28天');
}
}
// 调用函数getDays,获取这一年2月份的天数
getDays(year);
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 时钟案例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="clock"></div>
<!-- 加载完成以后在加载js,减少页面的空白时间 -->
<script>
// 获取dom节点
var clock1 = document.getElementById('clock');
// 封装函数
function clockFunc() {
// 获取当前时间
var date = new Date();
// 年份 YY 月份 MM 日期 DD 星期 dd 小时 hh 分钟 mm 秒 ss
// 获取年份
var YY = date.getFullYear();
// 获取月份 注意加1
var MM = date.getMonth() + 1;
// 获取日期
var DD = date.getDate();
// 获取星期几
var dd = date.getDay();
// 获取小时
var hh = date.getHours();
// 获取分钟
var mm = date.getMinutes();
// 获取秒
var ss = date.getSeconds();
// 格式化星期几
switch (dd) {
case 0:
dd = '星期日';
break;
case 1:
dd = '星期一'
break;
case 2:
dd = '星期二'
break;
case 3:
dd = '星期三'
break;
case 4:
dd = '星期四'
break;
case 5:
dd = '星期五'
break;
case 6:
dd = '星期六'
}
// 十二进制
if (hh > 12) {
hh = ' PM ' + strFunc(hh - 12);
} else {
hh = ' AM ' + strFunc(hh);
}
// 想要向id为clock的标签内部添加内容innerHTML
// = "56565";
clock1.innerHTML = '当前时间为:' + YY + ' 年 ' + MM + ' 月 ' + DD + ' 日 ' + dd + hh + ' : ' + strFunc(mm) + ' : ' + strFunc(ss);
}
// 添加0的函数
function strFunc(num) {
if (num < 10) {
num = '0' + num;
}
return num;
}
// 定时器
var timer = setInterval('clockFunc()', 1000);
</script>
</body>
</html>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
-
在一个函数中输入最大值(min)和最小值(max), 请返回最大值与最小值之间有几个质数。
思路: 先写一个判断是否是质数的函数
<script>
// 先判断是否为质数,判断一个值是否为质数,需要一个形参将值传进函数中
// 如果是一个质数,返回true
function isPrimeNumber(num){
// 质数,只能被1和自身整除的自然数,1不是质数也不是合数
if(isNaN(num) || num <= 1){
return false;
} else{
// flag如果为true说明,是一个质数,反之,不是质数
// 初始化认为他是一个质数
var flag = true;
// 3 是否能被2整除, 4 判断是否能被2,3, 5判断2,3,4
for(var i = 2; i < num; i++){ // 9,
// 判断是否为质数
// 如果该数值能够被它前面的除1之外的任一个数字整除,
// 就说明他不是一个质数
if(num % i == 0){
flag = false;
// alert('你是一个质数!')
}
}
return flag;
}
}
// 要判断最小值与最大值直之间有几个质数
// 最大值 max 最小值 min
function getPrimeNum(min, max){
// 存放min到max之间所有质数的个数的变量
var sumNum = 0;
// 先获取min到max的所有的数
for(var i = min; i <= max; i++){
// 判断i是质数
if(isPrimeNumber(i)){ // isPrimeNumber(i)要么是true,要么是false
sumNum ++;
}
}
// 将min到max之间所有质数的个数返回给函数
return sumNum;
}
alert(getPrimeNum(1, 72));//1~72之间有多少个质数
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 封装斐波那契数列的函数, 可以查询到第几位的斐波那契数列的值是多少
<script>
// 1. 斐波纳契数列
function cci(n){ // 第n项
if(isNaN(n) || n < 1){
return n;
} else if(n <= 2){
return 1;
} else{
// 存储第n项的数字
var num;
// 第n-2项的数字
var num1 = 1; // 1,2..
// 第n-1项的数字
var num2 = 1; // 2,3..
for(var i = 3; i <= n; i++){
// 获取到第n项的数字
num = num1 + num2;
// 更新n-2项,将原来的n-1项的内容,赋值给n-2项
num1 = num2;
// 更新n-1项,,将原来的n项的内容,赋值给n-1项
num2 = num;
}
// 第n项的值
return num;
}
}
alert(cci(7));//13
// 2. 递归
function cci(n){
if(isNaN(n) || n < 1){
return n;
} else if(n <= 2){
return 1;
} else{
return cci(n-1) + cci(n-2);
}
}
alert(cci(7));//13
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 编写函数validateCode(n),该函数实现随机产生n位数字构成的验证码,并返回该验证码。
<script>
// 产生n位数字组成的验证码
// 返回这个验证码
function validateCode(n){
// 初始化存放验证码的变量
var str = '';
// n位数
for(var i=0; i<n; i++){
// 随机数 () 0~1
// 你需要 0~10 不包含10 ()*10
// ()*10这个取得值为小数,转换成整数
// 向下取整 (()*10)
// ((()*10));
str += Math.floor(Math.random()*10);
}
return str;
}
document.write(validateCode(5));//随机的5位数字组成的验证码
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 在网页上输出:今天是:XXXX年XX月XX日 星期X 距离2021年五一还有XX天。
<script>
// 获取当前时间
var today = new Date();
// 获取年份
var YY = today.getFullYear();
// 获取月份, 加1
var MM = today.getMonth() + 1;
// 获取日期
var DD = today.getDate();
// 获取星期几,0-6
var dd = today.getDay();
// 获取当前时间的时间戳
var startTime = today.getTime();
// 格式化星期几
switch (dd) {
case 0:
dd = '星期日';
break;
case 1:
dd = '星期一'
break;
case 2:
dd = '星期二'
break;
case 3:
dd = '星期三'
break;
case 4:
dd = '星期四'
break;
case 5:
dd = '星期五'
break;
case 6:
dd = '星期六'
}
// 距离2021年5月1日还有多少天, 获取两边的时间戳
// 你可以直接在new Date(参数)中加参数
var endDate = new Date();
// 设置年份为2021
endDate.setFullYear(2021);
// 设置月份为5月,传4进去
endDate.setMonth(4);
// 设置日期为1日
endDate.setDate(1);
// 获取2021年5月1日的时间戳
var endTime = endDate.getTime();
// 获取剩余时间,单位毫秒
var leftTime = endTime - startTime;
var leftDays = leftTime / 1000 / 60 / 60 / 24;
document.write("今天是:" + YY + "年" + MM + "月" + DD + "日 "+ dd +" 距离2021年五一还有"+ leftDays +"天。")
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 将数组[‘香蕉’, ‘苹果’, ‘橘子’, ‘梨’, ‘草莓’]进行反转为[‘草莓’, ‘梨’, ‘橘子’, ‘苹果’, ‘香蕉’]
<script>
// 第一种做法
var arr = ['香蕉', '苹果', '橘子', '梨', '草莓'];
// 创建一个新数组,用于存放反转之后的元素
var arr1 = [];
// 遍历数组
for(var i=arr.length-1; i>=0; i--){
arr1.push(arr[i]);
}
console.log(arr1)
// 第二种做法
var arr = ['香蕉', '苹果', '橘子', '梨', '草莓'];
console.log(arr.reverse());
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 新建数组MyArr并赋值’A’,‘B’,‘C’,新建数组MyArr2并赋值’J’,‘K’,‘L’,将数组MyArr和MyArr2合并为MyArr3,并输出MyArr3数据到页面,删除MyArr3中第一个元素和最后一个元素,并输出MyArr3数据到页面。
<script>
var myArr = ['A','B','C'];
var myArr2 = ['J','K','L'];
// 创建一个新的数组
var myArr3 = [];
// 封装函数
function createArr(arr, newArr){
for(var i=0; i<arr.length; i++){
newArr.push(arr[i]);
}
}
// 遍历数组myArr
// for(var i=0; i<; i++){
// (myArr[i]);
// }
createArr(myArr, myArr3);
// 遍历数组myArr2
// for(var i=0; i<; i++){
// (myArr2[i]);
// }
createArr(myArr2, myArr3);
document.write(myArr3 + '<br />');
// 删除第一个元素
myArr3.shift();
// 删除最后一个元素
myArr3.pop();
document.write(myArr3);
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 使用数组接收用户输入的3个学生7门课程的成绩,然后在页面上显示每个学生的姓名,总成绩和平均分,并列出小于60的成绩
<script>
// 创建数组用于存放学生
var stuList = [];
for(var i=1; i<=3; i++){
var stu = prompt('请输入第' + i +'位学生的姓名:', '李雷');
// 将小于60的成绩拼接成一个字符串
var lowerScoreStr = '';
// 定义一个变量存储总成绩
var sumScore = 0;
for(var j=1; j<=4; j++){
var score = prompt('请输入' + stu + '第' + j +'门成绩:', '80') * 1;
// 每位同学的总成绩
sumScore += score;
// 判断小于60的成绩
if(score<60){
lowerScoreStr += '成绩' + j + "是" + score;
}
}
document.write(stu + '的总成绩为:' + sumScore + '分,平均成绩是:' + sumScore/4 + '分, 小于60的成绩有:' + lowerScoreStr + '<br />')
}
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 编写去重程序,将数组[1, 2, 6, 8, 1, 2, 66, 2, 12]中重复的元素去掉
<script>
// 数组去重 第一种方法
// 数组初始化
var arr = [1, 2, 6, 8, 1, 2, 2, 2, 66, 2, 12];
// 遍历数组
// 1 与 1后面所有元素进行比较
for (var i = 0; i < arr.length; i++) {
// i 与 i后面所有元素进行比较 i+1~-1
for (var j = i + 1; j < arr.length; j++) {
// 判断是否是重复的元素
if (arr[i] == arr[j]) {
// 删除2以后,后面元素补位上来,
// 这个位置上的元素,被认为已经比较过了,
// 所以你补位上来的元素没有做判断
arr.splice(j, 1);
// 就是将被删除的位置,再重新判断一遍
j--;
}
}
}
console.log(arr);
// 第二种方法
var arr = [1, 2, 6, 8, 1, 2, 2, 2, 66, 2, 12];
// 用于存放新的已经去重以后的数组
var newArr = [];
// 遍历数组
for(var i=0; i<arr.length; i++){
// 判断在新数组中,arr[i]是否存在
if(newArr.indexOf(arr[i]) == -1){
// [1], i=1, [1, 2]; i=2
newArr.push(arr[i]);
}
}
console.log(newArr);
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
-
创建一个电脑对象,要求这个对象有品牌,颜色,重量,型号,还可以看电影,打游戏,敲代码
分别使用今天讲的三种创建对象的方法实现
<script>
// 字面量方式创建对象
/*
语法: var 对象名 = {
属性名: 属性值
};
*/
var computer = {
brand: '小米',
color: '太空灰',
weight: '2kg',
model: 'mipro15.6增强版',
justSo: function() {
alert('电脑还可以看电影,打游戏,敲代码')
}
}
console.log(computer);
computer.justSo();
//-------------------------------------------------------------------------------------------------
// new Object
// 语法: var 对象名 = new Object();
var computer = new Object();
computer.brand = '小米';
computer.color = '太空灰';
computer.weight = '2kg';
computer.model = 'mipro15.6增强版';
computer.justSo = function() {
alert('电脑还可以看电影,打游戏,敲代码')
}
console.log(computer);
computer.justSo();
//------------------------------------------------------------------------------------------------------
// 构造函数
function Computer() {
this.brand = '小米';
this.color = '太空灰';
this.weight = '2kg';
this.model = 'mipro15.6增强版';
this.justSo = '电脑还可以看电影,打游戏,敲代码';
}
console.log(new Computer());
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
-
创建一个对象method, 里面定义两个方法,分别是
1.求两个任意正整数的最大公约数, a 与 c, 可以同时被a和c整除的最大数
2.求两个任意正整数的最小公倍数
<script>
var method = {
// 最大公约数
max: function(a, b){ // a, b形参
// 最大公约数,如果是2, 6; 1~4
var min = Math.min(a, b);
// 求出循环的最大值min, 1~min
for(var i=min; i>0; i--){
// 判断这个数是否可以同时被a和b整除
if(a%i == 0 && b%i == 0){
return i;
}
}
},
// 最小公倍数
min: function(a, b){
// 2, 3 是6, 2, 6是6
var max = Math.max(a,b);
for(var i=max; i<=a*b; i++){
if(i%a == 0 && i%b == 0){
return i;
}
}
}
}
console.log(method.max(12, 18));//最大公约数
console.log(method.min(12, 18));//最小公倍数
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 创建一个教学工具对象, 要求这个对象有教学设备, 学生花名册, 还有一个随机点名的程序
<script>
var tools = {
m: "电脑",
stuList: ["李雷", "Lucy", "lily", "韩梅梅"],
rollCall: function() {
// arr[suoyin]
var random = Math.floor(Math.random() * tools.stuList.length);
// 取数组的元素arr[索引值]
console.log(tools.stuList[random]);
// 在对象内部使用该对象的属性或方法,
// 你可以使用this.属性名,比如,
}
}
tools.rollCall()
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
-
统计一个班的成绩, 语文,数学,英语,历史, 10个人, 我去搜索一个人名字.,请将他的全部信息输出到页面上
- 先创建一个数组,用于存放学生信息
- 再给数组中元素,赋值,一个包含姓名和成绩的对象
- 创建一个函数,要求我传入姓名.你就返回给我这个同学信息(姓名和成绩的对象)
<script>
var myClass = [];
for (var i = 0; i < 3; i++) {
var stuName = prompt('请输入姓名', '李雷');
var stuC = prompt('请输入语文成绩', '90');
var stuM = prompt('请输入数学成绩', '98');
var stuE = prompt('请输入英语成绩', '89');
var stuH = prompt('请输入历史成绩', '99');
myClass.push({
stuName: stuName,
stuC: stuC,
stuM: stuM,
stuE: stuE,
stuH: stuH
})
}
创建函数
function searchStu(sName) {
// 判断是否有这个人的flag
var flag = false;
// 遍历出所有的学生
for (var i = 0; i < myClass.length; i++) {
// 判断stuName是否等于当前这个学生的姓名
if (myClass[i].stuName == sName) {
// 返回这个学生的信息
flag = true;
return myClass[i];
}
}
// 判断此人是否不存在
if (!flag) {
return {
stuName: '查无此人'
};
}
}
var obj = searchStu('lily');
for (key in obj) {
document.write(key + ":" + obj[key] + '<br />');
}
console.log(searchStu('lily'));
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 创建一个函数,用于判断元素是否在这个数组内
<script>
// 判断一个元素是否在数组内,indexOf,lastIndexOf,some
function judge(num, arr){ // 函数的名字是你自己可以修改
// if((num) != -1){
// return true;
// }
// return false;
return arr.some(function(item){
return item === num;
})
}
console.log(judge(1, [1,2,3]));//判断1在不在[1,2,3]里面,在里面返回true
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 把数组中的每一位数字都增加35%,并返回一个新数组
<script>
// map函数
// 数组名.map(function(item,index,array){})
//返回匿名函数中,return后面的运算结果
function changeArr(arr){
return arr.map(function(item){
return item * (1+0.35);
})
}
console.log(changeArr([1,3,6]));
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 创建一个函数,判断数组中是否存在30这个元素,返回布尔类型
<script>
// some
// 语法: 数组名.some(function(item, index, array){})
// 如果数组中只要有一个元素满足函数中return后面的条件,那么久返回true,否则,返回false
function judge(arr){
return arr.some(function(item){
return item === 30;
})
}
console.log(judge([10, 20, 40]));//数组中不存在30 false
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 创建一个函数,传入一个数和一个升序排列好的数组,要求将这个数插入到该数组中,并保证新的数组依然是升序排列,再将这个新数组返回
<script>
function sortFunc(num, arr) {
if (num > arr[arr.length - 1]) {
return arr.concat(num);
}
var newArr = arr.concat(num);
return newArr.sort(function(a, b) {
return a - b
});
}
console.log(sortFunc(5, [1, 6, 10]));//[1,5,6,10]
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
-
创建一个函数,用于将传入的数组,转换成字符串,每个元素之间使用
-
连接。比如:传入数组[“web”, “h5”, “javascript”],返回"web-h5-javascript"
<script>
// join()
// 将数组转换成字符串的方法
// 语法: 数组名.join(参数)
// 参数是'-',表明你想要将数组的元素用'-';连接成字符串,并输出
// 如果参数不填,默认是用逗号连接
function joinFunc(arr){
return arr.join('-');
}
console.log(joinFunc(["web", "h5", "javascript"]));//web-h5-javascript
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 创建一个函数,用于在传入的数组中查找参数a到参数b之间的元素,并返回它们的数组。
<script>
function search(arr, a, b) {
var min = Math.min(a, b);
var max = Math.max(a, b);
// filter
//语法: 数组名.filter(function(item, index, array){})
// 如果数组有满足,函数中return后面的条件的元素,
// 就将他们储存在一个新的数组中,并将新的数组返回
return arr.filter(function(item) {
return item >= min && item < max;
})
}
console.log(search([12, 10, 5, 8, 6], 6, 10));
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
-
创建函数, 将传入的字符串转换成驼峰式.
比如:传入字符串’hello-world’,返回helloWorld
<script>
function myFun(arr) {
var arr1 = arr.split('-');
var arr2 = arr1.map(function(item, index) {
var b = item;
if (index != 0) {
var a = item.charAt(0).toUpperCase();
b = item.replace(item.charAt(0), a);
}
return b;
})
return arr2.join('')
}
console.log(myFun('hello-world'));
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
-
创建一个函数, 用于提取参数,(参数名和参数个数不确定) 功能如下:
向函数中传入一个url地址, 请将url中的参数以对象的形式返回
比如:url = ‘/?id=1&num=6&name=xxx’;
将其以下面的形式返回到一个对象中 { id: ‘1’, num: ‘6’, name: ‘xxx’ }
<script>
function getParams(url) {
//先获取问号后面的字符串
var index = url.indexOf('?');
//截取问号后面的字符串,但是不包含问号
var str = url.substring(index + 1);
//将问号后面的字符串,按照&符分隔成数组
var strArr = str.split('&');
//创建一个空对象,用于储存参数信息
var param = {};
//遍历数组strArr
for (var i = 0; i < strArr.length; i++) {
var index1 = strArr[i].indexOf('=');
var key = strArr[i].substring(0, index1);
var value = strArr[i].substring(index1 + 1);
param[key] = value;
}
// (param);
return param;
}
console.log(getParams('/?id=1&num=6&name=xxx'));
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 创建一个函数,用于求出传入的字符在传入的字符串中出现的次数,并将该字符与出现的次数连接成一个字符串返回
<script>
function getCount(char, str) { //(字符,字符串)
//将字符串切割成数组,空字符串切割
var strArr = str.split('');
//初始化计数器
var num = 0;
//遍历数组
for (var i = 0; i < strArr.length; i++) {
//判断字符串char是否等于当前字符
if (char === strArr[i]) {
//计数器自增
num++;
}
}
return char + num;
}
//调用函数
console.log(getCount('s', "aahhbbsnnbb"));
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
38.随机点名
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#radm {
font-size: 150px;
text-align: center;
line-height: 800px;
font-weight: 400;
}
</style>
</head>
<body>
<div id="radm">开始</div>
</body>
<script>
var arr = ['小湫', '小欣', '小李', '小红', '小张', '小刘', '小梅', '小图', '小鬼']
console.log(arr.length);
var radm = document.getElementById('radm');
var i = 0;
var time;
radm.onclick = function() {
i++;
if (i % 2 == 0) {
clearInterval(time)
} else {
time = setInterval(function() {
var k = Math.floor(Math.random() * arr.length);
var r = Math.floor(Math.random() * 255);
var g = Math.floor(Math.random() * 255);
var b = Math.floor(Math.random() * 255);
radm.innerHTML = arr[k];
radm.style.color = `rgb(${r},${g},${b})`;
}, 30)
}
}
</script>
</html>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45