Как найти число в массиве JavaScript

Допустим есть некий массив ['r', 'b', '2', 'd'], понятно что в данном случае цифра = строка, в том и суть, как прогнать массив так, чтобы он нашел цифру и вернул true или false если не нашел?


Ответы (6 шт):

Автор решения: haker

преобразуйте строки в цифры, если ошибка то не цифра

→ Ссылка
Автор решения: Zhihar

вариант 1:

let arr = ['r', 'b', '2', 'd']
const res = arr.filter(elem => elem.localeCompare(String(+elem)) == 0).length != 0

вариант 2:

let arr = ['r', 'b', '2', 'd']
const res = arr.some(elem => elem.localeCompare(String(+elem)) == 0)

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

function isNumeric(str) {
    if (typeof str != "string") return false
    return !isNaN(str) && !isNaN(parseFloat(str))
}
→ Ссылка
Автор решения: Ивашка

https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/includes

const arr = ['r', 'b', '2', 'd']
const number = 2
const isTrue = arr.includes(number+'')
// true
console.log(isTrue)
→ Ссылка
Автор решения: Arkadii

Давай по порядку. Сначала перебираем массив(допустим с помощью метода forEach).

const arr = ['r', 'b', '2', 'd'];
arr.forEach(item => {
   .......
})

Теперь нам надо написать функционал, который поймёт число ли это

function isNumber(n) {
    ........
}

Чтобы узнать тип, можем использовать typeof. Но проблема в том, что typeof '5' вернёт string. Можем использовать конструктор Number(item) . Тогда число трансформируется в число('5' => 5), а строка в NaN('a' => NaN). В JS есть функция isNaN() результат которой мы будем возвращать. Итоговый код будет выглядеть так:

const arr = ['r', 'b', '2', 'd'];

arr.forEach(item => {
   isNumber(item);
})

function isNumber(n) {
    return !isNaN(Number(n));
}
→ Ссылка
Автор решения: Qwertiy

var a = ['r', 'b', '2', 'd', '0']

console.log(a.filter(x => x == +x))
console.log(a.find(x => x == +x))
console.log(+a.find(x => x == +x))

→ Ссылка
Автор решения: A K

isNaN сработает как и с '2', так 2. Можно использовать его с map() и получить данные для всего массива:

['r', 'b', '2', 'd'].map(value => { return !isNaN(value); })
→ Ссылка