1. 程式人生 > >在一個前端群裏看到的一個練習,獲取阿姆斯特朗數

在一個前端群裏看到的一個練習,獲取阿姆斯特朗數

content fun readonly har 前端 += utf 分享 ray

本來周五在公司,也沒啥事情幹,在群裏看見別人發的一個題目,身為一個前端菜雞就寫了一下,不喜勿噴....

技術分享

實現輸入一個數,當在一個可變範圍內時,會返回輸入數字最近的一個阿姆斯特朗數,並且可以輸出範圍內所有的阿姆斯特朗數。

題目如上,直接上代碼...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>阿姆斯特朗數</title>
</head>

<body>
    <div id="main">
        輸入正整數:<input type="text" id="enter" value="" onchange="init._init_interpolation(this.value)"/><br>
        數值範圍start:<input type="text" id="start" value="1" onchange="init._init_range(this.value)"/><br>
        數值範圍end:<input type="text" id="end" value="1000" onchange="init._init_range(this.value)"/><br>
        最近數:<input type="text" id="recent" value="" readonly/><br>
        查看阿姆斯特朗數:<button onclick="init._init_alert()">點擊查看</button>
    </div>
</body>
</html>
<script>
    let global_params = {
        _data: [],
        _arrs: [],
        _reg: /^[1-9]\d*$/,
        _state: false
    }
    console.log(global_params._reg.test(1.2))
    var init = {
        _init_interpolation: function(s){
            init_Auxiliary_Method._test(s);
            let _s = parseInt(s);
            if(global_params._state)global_params._data = global_params._arrs;
            global_params._state = true;
            global_params._arrs = global_params._data.concat();
            global_params._data.push(_s);
            global_params._data.sort(init_Auxiliary_Method._sortNumber);
            let index = global_params._data.indexOf(_s);
            let recent;
            if(index == 0){
            recent = global_params._data[index+1];
            }else{
            if(global_params._data[index]-global_params._data[index-1]<global_params._data[index+1]-global_params._data[index]){
              recent = global_params._data[index-1];
            }else{
              recent = global_params._data[index+1];
            }
            }
            document.getElementById("recent").value = recent;
        },
        _init_crossin: function(n){
            let a = n + "";
            let arr = a.split("");
            let data =[];
            init_Auxiliary_Method._add(data,arr);
            for (let i = 0; i < 10; i++) {
                var sum1 = data.reduce(init_Auxiliary_Method._getSum, 0)
            };
            if(n == sum1)global_params._data.push(sum1)
        },
        _init_range: function(state){
            init_Auxiliary_Method._test(state);
            let stare = document.getElementById("start").value;
            let end = document.getElementById("end").value;
            for(let j=stare;j<end;j++){
                if(stare<end)init._init_crossin(j);
            }
        },
        _init_alert: function(){
            if(global_params._arrs !== [])alert(global_params._arrs);
        }
    }

    var init_Auxiliary_Method = {                                                   //輔助方法
        _add: function(data,arr){                                            //數字拆分
            for(let i=0;i<arr.length;i++){
                data.push(Math.pow(parseInt(arr[i]),3))
            }
        },
        _getSum: function(preValue,curValue,index,array){
            return preValue += curValue;
        },
        _sortNumber: function(a,b){                                     //排序
            return a - b;
        },
        _test: function(state){
            if(!global_params._reg.test(parseFloat(state))){
                alert("請輸入正整數!");
                return false;
            }
        }
    }
    window.onload = function(){
        init._init_range(1);
    }
</script>
	

  

現在輸入一個正整數,選擇一個範圍,會返回所有的阿姆斯特朗數,並且返回最近的阿姆斯特朗數。

有什麽不對的希望大家指正....

在一個前端群裏看到的一個練習,獲取阿姆斯特朗數