@RuslanTimuziyev
Немного кодер

Как решить проблему с преобразованием типа, когда мешает NaN?

var someArray = ['3232', 'sdfdsf', 'gfdgdsf', '23423', '54534']
someArray.map(i => {
  if (если строка с числами) {
    // тут что-то делается
  } else if (если строка с символами) {
    // и здесь что-то делается
  }
})

В боевой задаче, мне нужно из json получить данные и через цикл их отсортировать для таблицы. Так вот sort в js предполагает разное поведение для чисел и строк. В числах стравнивается величина, а строки сравниваются последовательностью алфавита. Поэтому мне нужны условия (они в коде). Когда нам нужно узнать, число это или строка, мы первым делом проверяем тип или еще преобразовываем перед этим, что я и сделал:
Когда я выполняю +'3223', то на выходе 3223. Т.е. typeof +'3223' === 'number' дает true. Это хорошо, мне так и нужно.
Когда я выполняю +'sdfsdafew', на выходе NaN. Т.е. typeof +'dsfadfdsa' === 'number' дает true, ибо NaN это число, хвать его за ногу!
Пол часа сравнивал значения с NaN, мол "if (+'fdsfsdf' !== NaN)"... А NaN с самим собой даже нельзя сравнить, так как NaN === NaN равняется false...
Что делать?
  • Вопрос задан
  • 161 просмотр
Решения вопроса 2
Проверяйте на NaN при помощи специальной функции isNaN, и будет вам счастье. Возвращает true, если получилось NaN, и false – для любого другого значения.
Ответ написан
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
var someArray = ['3232', 'sdfdsf', 'gfdgdsf', '23423', '54534'], int=[], string= [];
someArray.map(i => {
  if (!isNaN(+i)) {
    int.push(i);
  } else {
    string.push(i);
  }
})
console.log("int= ", int.valueOf());
console.log("string= ", string.valueOf());
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
profesor08
@profesor08 Куратор тега JavaScript
Элементарно:
var someArray = ['3232', 'sdfdsf', 'gfdgdsf', '23423', '54534']
someArray.map(i => {
  if (!isNaN(i)) {
    // делай что-то с числами
  } else {
    // делай что-то со строками
  }
})


Гуглится тоже элементарно:
https://www.google.ru/search?q=js+string+is+number
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
22 нояб. 2024, в 06:06
1500 руб./в час
22 нояб. 2024, в 06:04
1 руб./за проект
22 нояб. 2024, в 03:54
1500 руб./за проект