ynizhenie
@ynizhenie

Не работает проверка нескольких значий зачений в if, почему?

Есть три три значения

let long <- Number
let lat <- Number
let name <- String

Нужно сделать проверку которая будет проверять сразу три значения с такими параметрами:

long !== 0 && "NaN" && null
lat !== 0 && "NaN" && null
name !== "" && null

Как это карректно отобразить в if ?

Пробовал вот так :
spoiler
if (
 (long !== 0 && "NaN" && null) &&
 (lat !== 0 && "NaN" && null) &&
 (name !== "" && null) 
 )
{
 console.log("Good coords")
}else{
console.log("Bad coords")
}
  • Вопрос задан
  • 186 просмотров
Пригласить эксперта
Ответы на вопрос 3
long === 0 и long === null можно проверить !long
а на Nan можно проверять только isNaN()
name === '' и name === null можно проверять !name

итого получается
if (long && !isNaN(+long) && lat && !isNaN(+lat) && name) { ... }

если нужно проверит что name это строка, то typeof
Ответ написан
Комментировать
@afanasiyz
Javascript-разработчик
просто null приводится к false.
А у вас логическое И.
Если long равно какому то числу, например 21 - проверка будет
(21 !== 0 && true && false)
а так, как у вас И - последний фолс сделает утверждение ложным.

(long !== 0 && !isNaN(long)&& long!== null) &&
 (lat !== 0 && !isNaN(lat) && lat !== null) &&
 (name !== "" && name !==  null)


Как то так надо.
Еще учтите, NaN - это не строка, а резервированное слово, поэтому скобочки я убрал
Ответ написан
Stalker_RED
@Stalker_RED
if (
(long !== 0 && "NaN" && null) &&
(lat !== 0 && "NaN" && null) &&
(name !== "" && null)
)
{
console.log("Good coords")
}

Буллшит. Я туда могу передать 999999999 или Infinity, или 'hello world' и оно пройдет проверку.

Лучше проверять как-то так:
if (lat >= -90 && lat <= 90) && (long >= -180 && long <= 180) {
 // good
}
Ответ написан
Ваш ответ на вопрос

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

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