1 function getDigitNumber(startNumber, endNumber) { 2 var reg = /^[1-9]d*$/; 3 if (startNumber < endNumber && reg.test(startNumber) && reg.test(endNumber)) { 4 for (var i = startNumber; i < endNumber; i++) { 5 var numberLength = 0; // 得到这个数字是几位数 6 var num = i; 7 while (num >= 1) { 8 num = num / 10; 9 numberLength++; 10 } 11 // console.log(numberLength) 12 var numArr = []; // 得到的每个数字的各个位数都是几,123则改成[1,2,3],3845则改成[3,8,4,5] 13 for (var j = 0; j < numberLength; j++) { 14 let k = numberLength - j; 15 if (j == 0) { // 这里的逻辑请看下图,这也是为什么第一位需要添加一个判断 16 numArr.push(Math.floor(i / Math.pow(10, k - 1))); 17 } else { 18 numArr.push(Math.floor(i % Math.pow(10, k) / Math.pow(10, k - 1))); 19 } 20 } 21 console.log(i) 22 console.log(numArr) 23 } 24 25 }else{ 26 console.warn("请输入正整数,且结束的数字大于等于开始数字") 27 } 28 }
具体的思路请看下图,其实很简单,就是知道,取余操作“%”和除法操作“/”