如何遍历函数的数值型参数并提取每一位数字?
解决数字拆分存储每一位的问题
你原来的代码有个核心问题:数字类型没有length属性,所以value.length会返回undefined,循环根本不会执行。下面给你两种实用的实现方案:
方法一:转字符串遍历(简单直观)
把数字转为字符串后,就能像遍历普通字符串一样获取每一位,再转成数字存入数组:
function assignValue(value) { const digits = []; // 将数字转为字符串,方便遍历每一位 const strNum = value.toString(); for (let i = 0; i < strNum.length; i++) { // 把字符转回数字,存入数组 digits.push(parseInt(strNum[i], 10)); } return digits; } // 测试示例 console.log(assignValue(123)); // 输出 [1, 2, 3] console.log(assignValue(4567)); // 输出 [4, 5, 6, 7]
方法二:纯数学运算(无需转字符串)
如果不想依赖字符串转换,可以通过取余和整除操作拆分每一位,最后反转数组得到正确顺序:
function assignValue(value) { const digits = []; // 单独处理0的情况 if (value === 0) { digits.push(0); return digits; } // 处理负数,先取绝对值 value = Math.abs(value); while (value > 0) { // 取最后一位数字(比如123 % 10 = 3) digits.push(value % 10); // 去掉最后一位(比如Math.floor(123 / 10) = 12) value = Math.floor(value / 10); } // 因为是从个位开始存储的,反转后得到正确顺序 return digits.reverse(); } // 测试示例 console.log(assignValue(123)); // 输出 [1, 2, 3] console.log(assignValue(-789)); // 输出 [7, 8, 9]
内容的提问来源于stack exchange,提问作者Dagger
相关产品推荐
相关产品推荐

