<!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>经典案列</title>
</head>
<body>
<script>
//1、随机数 = > 随机生成10000个1-10个随机数 统计每个出现的次数
function getRandom(x, y) {
var n = Math.max(x, y)
var m = Math.min(x, y)
var obj = {}
for (var i = 0; i < 10000; i++) {
var num = Math.floor(Math.random() * (n - m) + m)//获取n~m之间的随机数
// console.log(num)
if (obj[num]) { //obj[num]已经存在,则该数次数+1
obj[num]++
} else {//obj[num]不存在,则该存入该数
obj[num] = 1
}
}
for (var key in obj) {
console.log(key, obj[key])
}
}
getRandom(1, 10) //函数调用
/* 2、工具函数 随机生成一个姓名 = 》抽奖
var students = ['陈汗', '陈红', '郭杰河', '辛茹', '张但', '哈哈', '天佑',
'先春', '禧辰', '维康', '天天', '鑫', '倩', '町', '欣',
'巧', '媛', '庆', '建', '蝶', '鸣', '辰', '海', '旭', '豪',
'文', '臣', '婷', '川', '淋', '琼', '涛',
'生', '荣', '琪', '茂', '靖', '毅', '希', '松', '渔',
'小雷', '小芳', '小霞',
]
对象:键值对
根据索引值找对应的名字 索引值为键:名字为值
*/
function tool() {
var students = ['陈汗', '陈红', '郭杰河', '辛茹', '张但', '哈哈', '天佑',
'先春', '禧辰', '维康', '天天', '鑫', '倩', '町', '欣',
'巧', '媛', '庆', '建', '蝶', '鸣', '辰', '海', '旭', '豪',
'文', '臣', '婷', '川', '淋', '琼', '涛',
'生', '荣', '琪', '茂', '靖', '毅', '希', '松', '渔',
'小雷', '小芳', '小霞',
]
//定义一个新的空对象
var obj = {}
for (var i = 0; i < students.length; i++) {
//循环遍历得到数组里的一个随机索引值
var item = Math.floor(Math.random() * students.length)
//通过索引值得到数组里的元素
var i = students[item]
console.log(i)
}
}
tool() //函数调用
//3、打印倒计时间
function setTime() {
var count = 3 // 可自己设置值
var set = setInterval(function () {
console.log(count--)
if (count == 0) {
clearInterval(set)
}
}, 1000)
}
setTime()
/* 4、
4.1. 编写函数has(arr , 60) 判断数组中是否存在60这个元素,返回布尔类型
4.2. aabccd统计每个字符出现的次数,去掉重复的字符,使结果显示 abcd
4.3. 有一个从小到大排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
*/
function has() {
//定义一个数组
var arr = [22, 33, 44, 55, 66, 77]
//循环遍历数组内的元素
var isOk = arr.every(function (item) {
return item == 60
})
console.log(isOk)
var str = 'aabccd'
//定义一个空的新对象 键存元素 值存重复次数
var obj = {}
//循环遍历将字符串里面的元素存入空对象中 {元素:次数}
for (var i = 0; i < str.length; i++) {
//定义一个变量 存 获取字符串里的元素
var item = str[i]
// 存入空对象 obj[item] 判断
if (obj[item]) {
//空对象中已存在则该元素次数+1
obj[item]++
} else {
//空对象中没有就存入该元素 =1
obj[item] = 1
}
}
//通过for-in循环遍历,打印字符串中的元素 通过字符串常用方法str.concat把字符串拼接在一起(不存在重复的元素)
//定义一个空字符串 存每一个循环的到的元素
var str = ''
for (var key in obj) {
//把每一次循环得到的字符串拼接在一起 =》下面三种表达式皆可,可自行选择
// str = str + key
//`${str}${key}`
str = str.concat(key)
}
console.log(str)
var arr1 = [11, 22, 33, 44, 55]
arr1.push(Number(prompt()))
var arr1 = arr1.sort(function (a, b) {
return a - b
})
console.log(arr1)
}
has()
//5、 冒泡排序 从小到大 indexOf 去重
function bubble() {
var arr = [89, 54, 9, 89, 8, 21, 21, 23, 67, 98, 21, 15, 9]
//先通过冒泡排序从小到大
//外层循环控制循环的次数
for (var i = 0; i < arr.length - 1; i++) {
//内层循环--第一个数和后面所有的数进行比较 找出最大值
for (var j = 0; j < arr.length - i - 1; j++) {
//判断内层循环前后两者之间的大小
if (arr[j] > arr[j + 1]) {
var temp = arr[j]
arr[j] = arr[j + 1]
arr[j + 1] = temp
}
}
}
console.log(arr)
//创建一个空对象 存数组
var obj = {}
//循环遍历
for (var i = 0; i < arr.length; i++) {
// 获取arr中的元素
var item = arr[i]
//判断重复次数
if (obj[item]) {
obj[item]++
} else {
obj[item] = 1
}
}
//方法一 :indexOf 判断是否=-1 =-1 说明新数组中没有,则存入,否则不存
//声明一个空数组 去掉重复的元素
var arr2 = []
for (var i = 0; i < arr.length; i++) {
var item = arr[i]
if (arr2.indexOf(item) == -1) {
arr2.push(item)
}
}
console.log(arr2)
//方法二:splice 双重for循环
for (var i = 0; i < arr.length; i++) {
for (var j = i + 1; j < arr.length - 1; j++) {
if (arr[i] == arr[j]) {
arr.splice(i, 1)
j--
}
}
}
console.log(arr)
}
bubble()
//6、选择排序 找最小值索引号 小--大 indexOf 去重
function chose() {
var arr = [89, 54, 9, 89, 8, 21, 21, 23, 67, 98, 21, 15, 9]
for (var i = 0; i < arr.length - 1; i++) {
// 1.假设声明一个最小值的索引值
var minIndex = i
// 2、内层循环与假设的最小索引值比较
for (var j = i + 1; j < arr.length; j++) {
if (arr[minIndex] > arr[j]) {
minIndex = j
}
}
// 3、通过索引值得到元素,元素进行比较
var temp = arr[i]
arr[i] = arr[minIndex]
arr[minIndex] = temp
}
}
chose()
//7、 aabccd统计每个字符出现的次数,去掉重复的字符,使结果显示 abcd
function str() {
var str = 'aabccd'
var obj = {}
for (var i = 0; i < str.length; i++) {
var item = str[i]
if (obj[item]) {
obj[item]++
} else {
obj[item] = 1
}
}
var str1 = ''
for (var key in obj) {
str1 += key
}
console.log(str1)
}
str()
/*8、模板字符串练习``
function stu() {
var students = [{
number: 1001,
name: 'jack',
score: 98,
gender: '男'
},
{
number: 1002,
name: 'rose',
score: 95,
gender: '女'
},
{
number: 1003,
name: '小丽',
score: 85,
gender: '女'
}
]
*/
function stringTemplate() {
var students = [{
number: 1001,
name: 'jack',
score: 98,
gender: '男'
},
{
number: 1002,
name: 'rose',
score: 95,
gender: '女'
},
{
number: 1003,
name: '小丽',
score: 85,
gender: '女'
}
]
//通过map映射得到每一个数组对象
var newStudents = students.map(function (item, index) {
return item = `
<tr>
<td>${item.number}</td>
<td>${item.name}</td>
<td>${item.score}</td>
<td>${item.gender}</td>
</tr>
`
})
//通过模板字符串拼接
var stu = `<table>
<tr>
<th>学号</th>
<th>姓名</th>
<th>成绩</th>
<th>性别</th>
</tr>
${newStudents.join('') }
</table>`
document.write(stu)
}
stringTemplate()
/* 9、打印成绩
1. 创建一个学生成绩数组,存储所有学生的数学成绩,分别是 89,78,90,99,67,59
2. 求所有学生中分数最高的学生成绩,打印输出到界面
假设一个最大值
3. 求所有学生中分数最低学生成绩,打印输出到界面
假设一个最小值
4. 求不及格的学生有几个,打印输出到界面
*/
function score() {
var arr = [89, 78, 90, 35, 99, 67, 59]
//假设第一个是最大/小值
var maxScore = arr[0]
var minScore = arr[0]
for (var i = 0; i < arr.length; i++) {
if (maxScore < arr[i]) {
maxScore = arr[i]
}
if (minScore > arr[i]) {
minScore = arr[i]
}
}
console.log('最高分', maxScore)
console.log('最低分', minScore)
var unscore = arr.filter(function (item) {
return item < 60
})
console.log('不及格', unscore)
}
score()
/* 10、字符串=>数组=>对象
已知字符串 'http://www.qianfeng.com?username=admin&password=123'
var url = 'http://www.qianfeng.com?username=admin&password=123'
2. 获取用户名密码存储到对象中,形式如下(扩展))
{
username:'admin',
password:123
}
*/
function strObj() {
var url = 'http://www.qianfeng.com?username=admin&password=123'
// 先分割成['username=admin','password=123']
// 方法一
// var url = url.split('?').splice(1).join('').split('&')
// 方法二
var index = url.indexOf('?')
var url = url.substring(index + 1)
var url = url.split('&')
var obj = {}
for (var i = 0; i < url.length; i++) {
var item = url[i].split('=')
var name = item[0]
var value = item[1]
//键值对
obj[name] = value
}
console.log(obj)
}
strObj()
/* 11、生成随机颜色
封装函数, 根据参数区别返回是十六进制颜色还是RGB颜色值
function getRandomColor(type){
if(type == 'RGB'){
return rgb颜色
}else{
return 十六进制颜色
}
}*/
//生成随机颜色函数
function randow(x, y) {
var n = Math.max(x, y)
var m = Math.min(x, y)
return Math.floor(Math.random() * (n - m) + m)
}
function getRandow(type) {
// RGB格式
var r = randow(0, 256)
var g = randow(0, 256)
var b = randow(0, 256)
// 十六进制
var r1 = randow(0, 256).toString(16)
var g1 = randow(0, 256).toString(16)
var b1 = randow(0, 256).toString(16)
// 判断类型
if (type == 'GRB') {
return `rgb${r}${g}${b}`
} else {
return `#${r1}${g1}${b1}`
}
}
getRandow()
//12、99乘法表
function multip(){
for (var i = 1; i < 10; i++) {
for (var j = 1; j <= i; j++) {
// 模板字符串拼接 语法:`${变量}`
var m = `${i}x${j}=${i*j}`
document.write(` ${m}`)
}
document.write('<br>')
}
// console.log(m)
}
multip()
//13、打印1-20的数,不包含5 每5个一行 (使用document.write()打印)
function num() {
var count = 0
for (var i = 1; i <= 20; i++) {
document.write(' ', i)
count++
// 当计数器等于5时,换行打印,且计数器重置为0
if (count == 5) {
document.write('<br>')
count = 0
}
}
}
num()
/*14、
已知字符串: 'kavcefMMfuklqeMMzvcreMMuoadfe', 要求用**替换大写MM输出,如:'kavcef**fuklqe**zvcre**uoadfe'
敏感词过虑
*/
function replaceStr() {
var str = 'kavcefMMfuklqeMMzvcreMMuoadfe'
//方法一
var str = str.split('MM').join('**')
console.log(str)
// 方法二
while (str.indexOf('MM') != -1) {
str = str.replace('MM', '**')
}
console.log(str)
}
replaceStr()
//15、入职薪水10k,每年涨幅5%,50年后工资多少?求该员工50年共拿工资多少(累加和)
function salary() {
var salary = 10000 * 12 //第一年的薪资
var sum = salary
for (var i = 2; i <= 50; i++) {
// 涨幅工资
var salary = salary * 1.05
sum += salary
}
console.log(salary)
console.log(sum)
}
salary()
//16、求100-200以内的质数 只能被1和自身整除的数 flag =true关键
function prime() {
for (var i = 100; i <= 200; i++) {
var flag = true
for (var j = 2; j < i; j++) {
if (i % j == 0) {
flag = false
}
}
if (flag == true) {
console.log(i)
}
}
}
prime()
</script>
</body>
</html>
js=c的经典案列
最新推荐文章于 2022-12-06 11:45:54 发布