如何编写JavaScript的removeZeros函数?现有代码遭Mate Academy驳回
编写JavaScript的removeZeros函数
需求:实现一个名为removeZeros的函数,接收整数n,返回去除所有零后的整数。
以下是我目前的代码,但被Mate Academy平台驳回:
function removeZeros(n) { let nStr = n.toString(); let nStrArr = nStr.split(''); let nStrArrNoZeros = []; for (var i = 0; i < nStrArr.length; i++) { if (nStrArr[i] !== '0') { nStrArrNoZeros.push(nStrArr[i]); } } return parseInt(nStrArrNoZeros.join('')); }
代码存在的问题
- 当输入
n = 0时,过滤后得到空字符串,parseInt('')会返回NaN,不符合预期(应返回0) - 若输入整数全为0(如
n=000,JS中实际为0),同样会返回NaN parseInt处理超大整数时可能存在精度丢失风险
修正后的代码方案
方案一:数组过滤+空值处理
function removeZeros(n) { const filteredStr = n.toString().split('').filter(char => char !== '0').join(''); // 过滤后为空则返回0,否则转为数字 return filteredStr ? Number(filteredStr) : 0; }
方案二:正则替换写法
function removeZeros(n) { const result = n.toString().replace(/0/g, ''); return result ? Number(result) : 0; }
测试用例验证
removeZeros(10203)→ 123removeZeros(-100)→ -1removeZeros(0)→ 0removeZeros(1000)→ 1
内容的提问来源于stack exchange,提问作者nkoborwana pohotona
相关产品推荐
相关产品推荐

