Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
面试的时候遇到的问题,要求用原声js实现“找出所有1-100之间7的倍数或包含7的数字”这样的需求;实现的时候,可以把数字设为动态的,所以以下代码里就把xxx数放到输入框里,这样就可以随机输入了。
分析:思路还是用遍历数组的思路,对于是否是某某数的倍数,就是遍历到该数的时候,用该数字去除于设定的数字,能否除尽,可以除尽则留下,反之则剔除,具体的实现我就放在注释里面啦
实现方法如下: HTML代码
<input type="text" placeholder="包含" id="num" value="7" /> <button onclick="find()">找</button> <br/>
<span id="result">7</span>
<script>
// 找出所有1-100之间某个数的倍数或包含指定的某个数的数字
function find() {
// 待查找数字的信息
var con = document.getElementById("num").value;
// 定义数组,保存找到的数
// var arr = new Array();
var arr = [];
// 循环遍历 1 - 100,找出7的倍数或包含7的数字
for (var i = 1; i <= 100; i++) {
if (i % con == 0 || contains(i, con)) { // 7的倍数或包含7
arr.push(i);
}
}
// 显示
document.getElementById("result").innerHTML = arr;
}
// 判断一个数字(num)中是否包含指定的数字(con)
// 返回是否包含
// true:包含数字7
// false:不包含
function contains(num, con) {
while (num != 0) {
if(num % 10 == con){ // 判断个位数字包含数字7
return true;
}
// 不包含7,则扔掉个位数以便于下次继续判断
num = Math.floor(num / 10);
}
// 循环执行完毕,没有返回,则说明整个数字不包含7
return false;
}
</script>