js基礎練習(一)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <script>
        /**
         * 轉十進制
         * @param str 進制字符串
         * @param n 目標進制
         * @returns {number}
         */
        function string2Algorism(str, n) {
            var charCode0 = "0".charCodeAt(),
                charCode9 = "9".charCodeAt(),
                result = 0;
            str = str.toUpperCase();
            for (var i = 0; i < str.length; i++) {
                var c = str.charCodeAt(i);
                var num = 0;
                if (c >= charCode0 && c <= charCode9) {
                     num = Number(str.charAt(i));
                } else {
                    num =c -55;
                }
                result+= Math.pow(n,str.length-i-1)*num;
            }
            return result;
        }
        /**
         * 十進制轉任意進制
         * @param num
         * @param n
         * @returns {string}
         */
        function algorism2String(num,n) {
            var chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
            var result = "";
            while (num > 0) {
                result = chars.charAt(num % n) + result;
                num = parseInt(num / n);
            }
            return result;
        }

        /**
         * 十六進制轉字符串
         * @param hexCharCodeStr
         * @returns {*}
         */
        function hexCharCodeToStr(hexCharCodeStr) {
            var trimedStr = hexCharCodeStr.trim();
            var rawStr =
                trimedStr.substr(0,2).toLowerCase() === "0x"
                    ?
                    trimedStr.substr(2)
                    :
                    trimedStr;
            var len = rawStr.length;
            if(len % 2 !== 0) {
                alert("Illegal Format ASCII Code!");
                return "";
            }
            var curCharCode;
            var resultStr = [];
            for(var i = 0; i < len;i = i + 2) {
                curCharCode = parseInt(rawStr.substr(i, 2), 16); // ASCII Code Value
                resultStr.push(String.fromCharCode(curCharCode));
            }
            return resultStr.join("");
        }
        /**
         * 字符串轉十六進制
         * @param str
         * @returns {*}
         */
        function strToHexCharCode(str) {
            if(str === "")
                return "";
            var hexCharCode = [];
            hexCharCode.push("0x");
            for(var i = 0; i < str.length; i++) {
                hexCharCode.push((str.charCodeAt(i)).toString(16));
            }
            return hexCharCode.join("");
        }
        /**
         * happynumber
         * @param num
         * @param results
         * @returns {boolean}
         */
        function isHappyNumber(num, results) {
            var nums = new Array(num.length).fill("").map(function (_, i) {
                return parseInt(num.charAt(i))
            });
            nums.unshift(0);
            var result = (nums.reduce(function (total, p2) {
                return total + p2 * p2;
            }));
            if (results.includes(result))return false;
            results.push(result);
            return result === 1 ? true : isHappyNumber("" + result, results);
        }
        for (var i = 0; i <= 1000; i++) {
            if(isHappyNumber(""+i,[])){
                document.write(i+" ")
            }
        }
        /**
         * 冒泡排序
         * @param nums
         */
        function bubbleSort(nums) {
            for (var i = 0; i < nums.length-1; i++) {
                for (var j = 0; j < nums.length-i-1; j++) {
                   if(nums[j]>nums[j+1]){
                       var temp=nums[j];
                       nums[j]=nums[j+1];
                       nums[j+1]=temp;
                   }
                }
            }
            console.log(nums);
        }
        /**
         * 交換排序
         * @param nums
         */
        function exchangeSort(nums) {
            for (var i = 0; i < nums.length-1; i++) {
                for (var j = i+1; j < nums.length; j++) {
                    if(nums[i]>nums[j]){
                        var temp=nums[i];
                        nums[i]=nums[j];
                        nums[j]=temp;
                    }
                }
            }
            console.log(nums);
        }
        /**
         * 選擇排序
         * @param nums
         */
        function selectSort(nums) {
            for (var i = 0; i < nums.length-1; i++) {
                var selected=i;
                for (var j = i+1; j < nums.length; j++) {
                   if(nums[j]<nums[selected]){
                       selected=j;
                   }
                }
                if(selected!==i){
                    var temp=nums[i];
                    nums[i]=nums[selected]
                    nums[selected]=temp;
                }
            }
            console.log(nums);
        }
//        console.log(isHappyNumber("19"))
    </script>
</body>
</html>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章