我有一个功能:

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))

10-01 14:53