JS Как взять массив чисел и вернуть наибольшее проходимое объединенное число - PullRequest
0 голосов
/ 23 декабря 2018

Этот вопрос был удален

Ответы [ 3 ]

0 голосов
/ 23 декабря 2018

/*
E.g. if num is 23, the function should return 32.
E.g. if num is 9, the function should return 9.
E.g. if num is 581 the function should return 851.
The code that I have written is this;
*/
const sortFunc = (a, b) => { 
  if(a < b) return 1;
  if(a > b) return -1;
  return 0;
}

function largestNumber(num) {
  return (num).toString()
                .split('')
                .map(e => parseInt(e))
                .sort(sortFunc);
}

console.log(largestNumber(234));
console.log(largestNumber(184507609));
0 голосов
/ 23 декабря 2018

Это немного с самого начала.Ваша функция принимает целое число в качестве аргумента.Это означает, что вы не можете просто использовать nums.sort(), потому что у целых чисел нет метода sort(), а также потому, что вы действительно хотите отсортировать отдельные цифры.В javascript наиболее удобный способ сделать это, превратив строку в строку и разделив ее на цифры.

Например:

let n = 5713
let arr = n.toString().split('')

console.log(arr)

Это то, что вы теперь можете отсортировать.После того, как вы отсортировали его, вы можете сложить его вместе с join(), а затем превратить его в число с помощью parseInt():

let arr = ["7", "5", "3", "1"]
let str = arr.join('')
let n = parseInt(str)

console.log(n)

Вы можете установить список, даже если это список строк.Что-то вроде:

list.sort((a, b) => b - a) // the - will convert the strings to numbers for you

b-a вернет отрицательное число, когда a> b, положительное, когда a sort(), и это вездесущий шаблон в javascript.

В конце вы можете получить что-то вроде:

function largestNumber(num) {
  let str = num.toString().split('')  // turn number into string and spilt into array
  .sort((a, b) => b - a)              // reverse sort
  .join('')                           // join back to a string

  return parseInt(str)                // return a number
  };

 console.log( largestNumber(5371))
0 голосов
/ 23 декабря 2018

Передайте число в функцию, разделите число на отдельные цифры, преобразуйте в массив целых чисел, отсортируйте по убыванию, а затем объедините элементы, чтобы получить возвращенное число.

let numbers =[9,0,1,43,81,21,20,91,32,53,473,850,801,100,219,581,12345,12345000,1010100,8001009100]

numbers.forEach(function(number){
  console.log(myFunction(number));
})
// gives 9,0,1,43,81,21,0,91,32,53,743,850,81,100,921,851,54321,54321000,1110000,9811000000


function myFunction(num) {
  let numArray= num.toString().split('');
  numArray.forEach(function(num){
    num = parseInt(num);
  })
  numArray.sort(function(a, b){return b - a});
  return numArray.join('');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...