本来周五在公司,也没啥事情干,在群里看见别人发的一个题目,身为一个前端菜鸡就写了一下,不喜勿喷....
实现输入一个数,当在一个可变范围内时,会返回输入数字最近的一个阿姆斯特朗数,并且可以输出范围内所有的阿姆斯特朗数。
题目如上,直接上代码...
<!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="" οnchange="init._init_interpolation(this.value)"/><br>
数值范围start:<input type="text" id="start" value="1" οnchange="init._init_range(this.value)"/><br>
数值范围end:<input type="text" id="end" value="1000" οnchange="init._init_range(this.value)"/><br>
最近数:<input type="text" id="recent" value="" readonly/><br>
查看阿姆斯特朗数:<button οnclick="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>
现在输入一个正整数,选择一个范围,会返回所有的阿姆斯特朗数,并且返回最近的阿姆斯特朗数。
有什么不对的希望大家指正....