在一個前端群裏看到的一個練習,獲取阿姆斯特朗數
阿新 • • 發佈:2017-08-06
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>
現在輸入一個正整數,選擇一個範圍,會返回所有的阿姆斯特朗數,並且返回最近的阿姆斯特朗數。
有什麽不對的希望大家指正....
在一個前端群裏看到的一個練習,獲取阿姆斯特朗數