Вы можете использовать метод Array.prototype.findIndex , чтобы узнать индекс NaN в массиве
let index = [1,3,4,'hello',NaN,3].findIndex(Number.isNaN)
console.log(index)
Вы можете использовать Array.prototype.includes , чтобы проверить, присутствует ли NaN в массиве или нет. Это не даст вам индекс, хотя! Он вернет логическое значение. Если NaN присутствует, будет возвращено значение true, в противном случае будет возвращено значение false
let isNaNPresent = [1,2,NaN,'ball'].includes(NaN)
console.log(isNaNPresent)
Не использовать Array.prototype.indexOf
Вы не можете использовать Array.Prototype.indexOf , чтобы найти индекс NaN внутри массива. Потому что indexOf использует оператор строгого равенства для внутреннего использования и NaN === NaN
оценивается как false
. Поэтому indexOf не сможет обнаружить NaN внутри массива
[1,NaN,2].indexOf(NaN) // -1
Используйте Number.isNaN
вместо isNaN
:
Здесь я выбираю Number.isNaN более isNaN . Потому что isNaN
рассматривает string literal
как NaN
. С другой стороны, Number.isNaN
рассматривает только NaN
буквально как NaN
isNaN('hello world') // true
Number.isNaN('hello world') // false
Или, напишите свою собственную логику:
Вы можете написать свою собственную логику, чтобы найти NaN. Как вы уже знаете, NaN - единственное значение в javascript, которое not equal to itself
. Вот почему я предложил не использовать Array.prototype.indexOf
.
NaN === NaN // false
Мы можем использовать эту идею для написания нашей собственной функции isNaN.
[1,2,'str',NaN,5].findIndex(e=>e!=e) // 3