возвращая наибольшее значение (ASCII) - PullRequest
0 голосов
/ 30 марта 2019

У меня есть этот код

function maxNum (array, str = -Infinity){
    var max = 0;
    var a = array.length;
    var b = "";
    for (counter=0;counter<a;counter++)
    {
        if (array[counter] > max)
        {
            max = array[counter];
        }
        else if (max < b){
            max = b;
        }
    }
    return max > str ? max : str
}
console.log(maxNum([1, 2, 3, 5], 10));// output will be 10

Получает массив и значение и возвращает наибольшее число (только цифры)

как я могу заставить его работать, если задан символ, использовать значение ASCII этого символа и вернуть результат как я могу реализовать String.charCodeAt(): для кода?

Я хочу, чтобы вывод ([1, 2, 3, 'a'], 10) был 'a'

и

Я хочу, чтобы вывод ([1,2,3,4,'a','b'],'a') был 'b'

Ответы [ 4 ]

3 голосов
/ 30 марта 2019

Использование массива reduce() и charCodeAt()

function maxNum(array, str = -Infinity) {
  return array.reduce((max, item) => {
    let itemc = isNaN(item) ? item.charCodeAt() : item;
    let maxc = isNaN(max) ? max.charCodeAt() : max;
    return max = (itemc > maxc) ? item : max;
  }, str)
}

console.log(maxNum([1, 2, 3, 5], 10))
console.log(maxNum([1, 2, 3, 'a'], 10))
console.log(maxNum([1, 2, 3, 'a','c'], 'b'))
console.log(maxNum([1, 2, 3, 'a'], 'b'))

Ваш подход с использованием charCodeAt()

function maxNum(array, str = -Infinity) {
  var max = str;
  var a = array.length;
  for (counter = 0; counter < a; counter++) {
    let itemc = isNaN(array[counter]) ? array[counter].charCodeAt() : array[counter];
    let maxc = isNaN(max) ? max.charCodeAt() : max;
    if (itemc > maxc) {
      max = array[counter];
    }
  }
  return max;
}

console.log(maxNum([1, 2, 3, 5], 10))
console.log(maxNum([1, 2, 3, 'a'], 10))
console.log(maxNum([1, 2, 3, 'a','c'], 'b')) 
console.log(maxNum([1, 2, 3, 'a'], 'b'))
0 голосов
/ 30 марта 2019
function maxNum (array, str = -Infinity){
var max = 0;
var a = array.length;
var b = "";
for (counter=0;counter<a;counter++)
{
    let asc = array[counter];
    let asciicode = asc.toString().charCodeAt();
    if (asciicode > max)
    {
        max = asciicode ;
    }
    else if (max < b){
        max = b;
    }
}
return max > str ? max : str
}
console.log(String.fromCharCode( maxNum([1, 2, 3, 5, 'a', 'A', 's'], 10)));
0 голосов
/ 30 марта 2019

с использованием concat и sort

function maxNum(array, str = -Infinity) {
  const charCode = (char) => isNaN(char) ? char.charCodeAt() : char;
  
  return [].concat(array, [str]).sort((a,b) => charCode(a) < charCode(b) ? 1 : -1)[0];
}

console.log(maxNum([1, 2, 3, 5], 10))
console.log(maxNum([1, 2, 3, 'a'], 10))
console.log(maxNum([1, 2, 3, 'a'], 'b'))
0 голосов
/ 30 марта 2019

Чтобы получить значение ASCII для одного символа, используйте String.charCodeAt():

const string = "J";
//ASCII "J" is 74
console.log(string.charCodeAt(0));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...