найти наибольшее значение для набора цифр (JS) - PullRequest
0 голосов
/ 25 сентября 2019

Сегодня я столкнулся с проблемой, которая заключалась в следующем: для заданного числа X найдите наибольшее число, которое имеет тот же набор цифр, что и X.
Вот код, который я пробовал.Он останавливается после цикла for, предполагается добавить строку чисел в массив.* В коде есть комментарии, если вы не уверены в чем-то, не стесняйтесь спрашивать меня.

//we give the variable a number 
 var num = 1263;
 document.write(num+ "<br>");
//we turn the number into a string and store it into X
 var X =num.toString();
 document.write(X+ "<br>");
//we split the digits of the number (ie from X)
 var eachChar = X.split("");
 document.write(eachChar+ "<br>");
 //we sort the numbers in order of increasing value
 eachChar.sort().reverse();
 document.write(eachChar+ "<br>");
 //add the strings together 
 for (i = 0; i < eachChar.length; i++) {
    eachchar[0] = eachChar[0]+eachChar[i+1];

 }
//it stops working from here on
//turn the number back into an integer
 TurnBack =parseInt(eachChar[0]);

 if (num=TurnBack) {
    document.write("the initial value is the highest value");

 }else{
     document.write("the biggest possible value is"+ TurnBack);
 }

1 Ответ

1 голос
/ 25 сентября 2019

В вашем коде есть две простые ошибки.

  1. eachchar[0] = ... содержит опечатку с большой буквы.Это должно быть eachChar[0] = ...
  2. Ваша последняя проверка использует один = вместо оператора сравнения, например == или ===.Это должно быть if (num === turnBack), в противном случае вы устанавливаете значение num, а не , сравнивая его.

Это, конечно, естьболее простые (или, по крайней мере, более краткие) способы написания этого.Ваша логика здорова, но вы можете немного ее очистить, объединив свои методы.Кроме того, вы перебираете массив для перестройки строки, но для этого есть встроенный метод: Array.join()

const checkHighestNumber = num => {
  const highest = parseInt(num.toString().split('').sort().reverse().join(""));
  return highest === num
    ? `Initial value is the highest value.`
    : `The largest possible number from ${num} is ${highest}`;
}

console.log(checkHighestNumber(54321));
console.log(checkHighestNumber(12431));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...