本来周五在公司,也没啥事情干,在群里看见别人发的一个题目,身为一个前端菜鸡就写了一下,不喜勿喷....
实现输入一个数,当在一个可变范围内时,会返回输入数字最近的一个阿姆斯特朗数,并且可以输出范围内所有的阿姆斯特朗数。
题目如上,直接上代码...
<!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>
现在输入一个正整数,选择一个范围,会返回所有的阿姆斯特朗数,并且返回最近的阿姆斯特朗数。
有什么不对的希望大家指正....
时间: 2024-10-13 11:42:58