发表于: 2020-03-11 18:54:56

2 1465


今天完成的事情:


整合了下代码 这样函数就不会污染全局变量,只有变量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 = 2j < nj++) {
            if (n % j === 0) {
                return false;
            }
        }
        return true;
    },
    /**
     * 求和
     * @param {number} arr 
     * @returns {number}
     */
    sumOfArray: function (arr) {
        var sum = 0;
        for (var i = 0i < arr.lengthi++) {
            sum += arr[i]
        }
        return sum;
    },
    /**
     * 求数组最大值
     * @param {number} arr 
     * @returns {number}
     */
    maxOfArray: function (arr) {
        var max = arr[0];
        for (var i = 0i < arr.lengthi++) {
            if (arr[i] > max) {
                max = arr[i];
            }
        }
        return max;
    },
    /**
     * 求数组最小值
     * @param {number} arr 
     * @returns {number}
     */
    minOfArray: function (arr) {
        var min = arr[0];
        for (var i = 0i < arr.lengthi++) {
            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 (yearmonth) {
        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 = 0i < arr.lengthi++) {
            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 = 2i < num - 2i++) {
                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 = 1i <= 12i++) {
                console.log(`${year}${i}${this.getDays(year,i)}天`)
            }

        }

    },
    /**
     * 比较数组大小
     * @param {Array} arr 
     * @param {Function} compare 
     */
    sort: function (arrcompare) {
        if (!compare) {
            //未传递函数,默认比较方式
            compare = function (ab) {
                if (a > b) {
                    return 1;
                } else if (a === b) {
                    return 0;
                } else {
                    return -1;
                }
            }
        }
        for (var i = 1i < arr.lengthi++) { //数组中的数据循环出来了
            for (var j = 0j < arr.length - ij++) {
                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 (arrcallback) {
        var record = [];
        for (var i = 0i < arr.lengthi++) {
            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 = [12345678910]
var num = obj.count(arr,obj.isPrime)
console.log(num)


明天计划的事情:

学习Array构造器
遇到的问题:


收获:

函数 回调函数 数组 循环组合使用

/**
 * 蔡徐坤大战乔碧萝
 * @param {*} name     角色名
 * @param {*} attack   攻击力
 * @param {*} defence  防御力
 * @param {*} hp       生命值
 * @param {*} critRete 暴击率
 */
function Game(nameattackdefencehpcritRete) {
    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("蔡徐坤"1005030030);
chook.print();
var tank = new Game("乔碧萝"1502020070);
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("游戏结束")




返回列表 返回列表
评论

    分享到