发表于: 2020-03-11 18:54:56
2 1464
今天完成的事情:
整合了下代码 这样函数就不会污染全局变量,只有变量obj会成为全局属性
var obj = {
/**
* 判断是不是奇数
* @param {number} n
* @returns {boolean}
*/
isOdd: function (n) {
return n % 2 !== 0;
},
/**
* 判断是不是素数
* @param {number} n
* @returns {boolean}
*/
isPrime: function (n) {
if (n < 2) {
return false;
}
for (var j = 2; j < n; j++) {
if (n % j === 0) {
return false;
}
}
return true;
},
/**
* 求和
* @param {number} arr
* @returns {number}
*/
sumOfArray: function (arr) {
var sum = 0;
for (var i = 0; i < arr.length; i++) {
sum += arr[i]
}
return sum;
},
/**
* 求数组最大值
* @param {number} arr
* @returns {number}
*/
maxOfArray: function (arr) {
var max = arr[0];
for (var i = 0; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
},
/**
* 求数组最小值
* @param {number} arr
* @returns {number}
*/
minOfArray: function (arr) {
var min = arr[0];
for (var i = 0; i < arr.length; i++) {
if (arr[i] < min) {
min = arr[i];
}
}
return min;
},
/**
* 判断是不是闰年
* @param {number} year
* @returns {boolean}
*/
isLeap: function (year) {
return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;
},
/**
* 根据用户输入的年和月判断天数
* @param {number} year
* @param {number} month
* @returns {number}
*/
getDays: function (year, month) {
if (month === 2) {
return this.isLeap(year) ? 29 : 28;
} else if (month < 8 && this.isOdd(month) || month >= 8 && !this.isOdd(month)) {
return 31;
} else {
return 30;
}
},
/**
* 判断数组中出现频率最多的数字和次数
* @param {Array} arr
* @returns {number}
*/
getTopFreqInArray: function (arr) {
var record = {};
for (var i = 0; i < arr.length; i++) {
var n = arr[i];
if (record[n]) {
record[n]++;
} else {
record[n] = 1;
}
}
var result;
for (var prop in record) {
if (!result || record[prop] > result.frequency) {
result = {
number: prop,
frequency: record[prop]
}
}
}
return result;
},
/**
* 根据用户输入的数字输出哥德巴赫猜想
* @param {number} num
* @returns {number}
*/
GoldBach: function (num) {
if (isNaN(num) || num <= 2 || this.isOdd(num)) {
console.log("输入错误")
return;
} else {
for (var i = 2; i < num - 2; i++) {
var j = num - i;
if (this.isPrime(j) && this.isPrime(i)) {
console.log(`${num}=${j}+${i}`)
return
}
}
}
},
/**
* 根据用户输入的年返回每个月的天数
* @param {number} year
*/
days: function (year) {
if (isNaN(year) || year < 1990 || year > 2100) {
console.log("输入错误")
return;
} else {
for (var i = 1; i <= 12; i++) {
console.log(`${year}年${i}月${this.getDays(year,i)}天`)
}
}
},
/**
* 比较数组大小
* @param {Array} arr
* @param {Function} compare
*/
sort: function (arr, compare) {
if (!compare) {
//未传递函数,默认比较方式
compare = function (a, b) {
if (a > b) {
return 1;
} else if (a === b) {
return 0;
} else {
return -1;
}
}
}
for (var i = 1; i < arr.length; i++) { //数组中的数据循环出来了
for (var j = 0; j < arr.length - i; j++) {
if (compare(arr[j], arr[j + 1]) > 0) {
var temp = arr[j];
arr[j] = arr[j + 1]
arr[j + 1] = temp;
}
}
}
},
/**
* 判断数组是否符合某种条件
* @param {Array} arr
* @param {Function} callback
*/
filter: function (arr, callback) {
var record = [];
for (var i = 0; i < arr.length; i++) {
if (callback(arr[i])) {
record.push(arr[i])
}
}
return record;
},
/**
* 从指定的数组中,查找一个满足条件的元素
* @param {Array} arr
* @param {Function} callback
*/
find:function(arr,callback){
for(var i=0;i<arr.length;i++){
if(callback(arr[i])){
return arr[i];
}
}
},
/**
*
* @param {Array} arr
* @param {Function} callback
*/
count:function(arr,callback){
var record=0;
for(var i=0;i<arr.length;i++){
if(callback(arr[i])){
record++ ;
}
}
return record;
}
}
// var arr=[
// {name:"c",age:33,Weight:80},
// {name:"b",age:25,Weight:70},
// {name:"a",age:18,Weight:75},
// ];
// obj.sort(arr,function(a,b){
// return a.Weight-b.Weight //比较对象时大小排序
// })
// console.log(arr)
// var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
// var newArray = obj.filter(arr,obj.isPrime)
// console.log(newArray)
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
var num = obj.count(arr,obj.isPrime)
console.log(num)
明天计划的事情:
学习Array构造器
遇到的问题:
无
收获:
函数 回调函数 数组 循环组合使用
/**
* 蔡徐坤大战乔碧萝
* @param {*} name 角色名
* @param {*} attack 攻击力
* @param {*} defence 防御力
* @param {*} hp 生命值
* @param {*} critRete 暴击率
*/
function Game(name, attack, defence, hp, critRete) {
this.name = name,
this.attack = attack,
this.defence = defence,
this.hp = hp,
this.critRete = critRete,
this.print = function () { //打印数据
console.log(`${this.name}\t攻击力:${this.attack}\t防御力:${this.defence}\t生命值:${this.hp}\t暴击率:${this.critRete}`)
},
this.hit = function (fight) { //输出伤害
var harm = this.attack - fight.defence; //输出伤害
var critical = this.critRete / 100; //暴击伤害
var ran = Math.random(); // 随机数
var isCritRete = false; // 记录是否暴击
if (ran <= critical) {
harm *= 2;
}
if (harm < 0) { //攻击力最低为1
harm = 1;
}
fight.hp -= harm;
if(fight.hp<0){
fight.hp=0;
}
console.log(`${isCritRete?"暴击!":""}${this.name}对${fight.name}造成${harm}伤害,${fight.name}剩余生命${fight.hp}`)
return fight.hp === 0;
}
}
var chook = new Game("蔡徐坤", 100, 50, 300, 30);
chook.print();
var tank = new Game("乔碧萝", 150, 20, 200, 70);
tank.print();
chook.hit(tank);
tank.hit(chook);
while(true){
if(chook.hit(tank)){
break;
}
if(tank.hit(chook)){
break;
}
}
chook.print();
tank.print();
console.log("游戏结束")
评论