@SerGeGR

Как отфильтровать массив по типу данных?

Имеется массив из разных типов данных, например,

var arr = ['string', 5, 'hey',  43, true, 'whats up', false];

Как его отфильтровать, чтобы выдавались только строковые значения?
  • Вопрос задан
  • 1058 просмотров
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
Проверяем, что возвращает оператор typeof:

const strings = arr.filter(n => typeof n === 'string');
const numbers = arr.filter(n => typeof n === 'number');
const booleans = arr.filter(n => typeof n === 'boolean');

Или, проверяем, что элемент и результат его преобразования в значение интересующего нас типа совпадают:

const strings = arr.filter(n => n === `${n}`);
const numbers = arr.filter(n => n === +n); // в отличие от typeof, отбрасывает NaN
const booleans = arr.filter(n => n === !!n);

Или, группируем массив по имени типа, а дальше извлекаем чего надо:

const groupedByType = arr.reduce((acc, n) => {
  const type = n == null ? `${n}` : n.constructor.name.toLowerCase();
  (acc[type] = acc[type] || []).push(n);
  return acc;
}, {});

const strings = groupedByType.string;
Ответ написан
Комментировать
@nvdfxx
Senior Pomidor developer
arr.filter(e => typeof e === 'string')
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы