Задать вопрос
dev_max
@dev_max
Front-end developer

Как из массива строк, представляющих собой числа, выбрать максимальный элемент?

Как выявить максимальное значение из массива без его изменения?
Суть в том, что если, допустим, использовать Math.max( ...['1', '2.20', '5.50']), то он вернет 5.5, а мне нужно, чтобы всё сохранялось в первоначальном виде, т.е. чтобы вернулось '5.50'.
  • Вопрос задан
  • 95 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Сравниваем числовые эквиваленты элементов, а запоминаем максимальный в исходном виде:

const maxStr = arr.length
  ? arr.reduce((max, n) => +n < +max ? max : n)
  : null;

Или, в более общем виде:

function max(data, key = n => n) {
  const getVal = key instanceof Function ? key : n => n[key];
  let result = null;

  for (const n of data) {
    const val = getVal(n);
    result = (!result || result[1] < val) ? [ n, val ] : result;
  }

  return result?.[0];
}


const maxStr = max(arr, Number);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы