我有一个功能:
function splitToDigits(n) {
var digits = ("" + n).split("").map(function(item) {
return parseInt(item, 10);
});
console.log(digits);
}
console.log(splitToDigits(123456784987654321));
这将返回
digits = [1,2,3,4,5,6,7,8,4,9,8,7,6,5,4,3,2,0]
。知道为什么最后一个元素是
0
吗?我注意到,当我从数组中删除2个元素时,它的行为正常。感谢您提供的所有出色答案! :) 最佳答案
正如上面评论部分中的Jaromanda X所述,JavaScript没有足够的精度来跟踪传递给函数的整数中的每个数字。
要解决此问题,您应该改为传递一个字符串:
console.log(splitToDigits('123456784987654321'))
但是,我还要指出,您可以大大简化
splitToDigits
方法:function splitToDigits(n) {
return [].map.call(n + '', Number)
}
console.log(splitToDigits('123456784987654321'))
console.log(splitToDigits(1234))