如何将分割数字合并为一个数字?

问题描述

我需要编写一个函数,该函数需要一个数字并返回可以用相同数字进行的最大数字。

到目前为止,我已经得到:

function largestNumber(num) {
    var digits      = num.toString().split('');
    var splitDigits = digits.map(Number);
    splitDigits.sort(function(a,b){return b-a});
    return splitDigits
}

这将以正确的顺序返回数字,但数字将被分割。例如。 123 = [3,2,1]

  • 有没有办法我可以返回321的整数?

解决方法

您需要加入数组以返回数字:

function largestNumber(num) {
    var digits = num.toString().split('');
    var splitDigits = digits.map(Number);
    splitDigits.sort(function(a,b){return b-a});
    return Number(splitDigits.join(''));
}
,

您需要重新输入一个号码

const largestNumber = n => +[...n.toString(10)].sort((a,b)=>b-a).join('')
 
console.log('123 ->',largestNumber(123 ))  // 321
console.log('152 ->',largestNumber(152 ))  // 521
.as-console-wrapper { max-height: 100% !important; top: 0; }

检查参数是否为整数也是一个好主意

function largestNumber(n)
  {
  if (!Number.isInteger(n)) return 0
  return +[...n.toString(10)].sort((a,b)=>b-a).join('')
  }