Методы массивов: Array.isArray, some, every
Метод Array.isArray
Порой требуется понять, являются ли данные, которые, например, пришли с сервера – массивом. Как мы можем это узнать? Существует оператор typeof, но в JS нет отдельного типа для массивов. JS не различает массив от объекта: для него и то и другое – объекты. Но задачу как-то надо решать, именно для этого и существует статический метод isArray
в объекте Array
.
const obj = {name: 'Толян'}; const arr = [1, 2, 3]; Array.isArray(arr); //true Array.isArray(obj); //false
Метод some
Представим, что у тебя есть массив чисел. При этом, предположим, что на момент работы с массивом ты точно не знаешь, какими числами он заполнен.
И тебе нужно узнать, что в массиве есть хотя бы один элемент, который можно разделить на 2 и полученное значению будет больше, либо равно 10.
В голову может прийти множество вариантов решений. Но метод some
подойдет тут намного лучше:
const numbers = [20, 45, 12, -4, 5, 7]; const has = numbers.some(n => (n/2) >= 10); has; // true
В данном случае под наше условие подойдет даже 2 числа 20
и 45
, поэтому метод выдаст нам true
.
Метод every
Метод every
похож на метод some
. Но, по названию должно быть понятно, что метод every
вернет true
только в том случае, если все элементы массива подходят под заданное условие.
Давай проверим каждый элемент массива на условие: каждый элемент делится 2 и полученное значение больше или равно 10.
const numbers = [20, 30, 40]; const otherNumbers = [20, 10, 40]; const hasInNumbers = numbers.every(n => (n/2) >= 10); const hasInOtherNumbers = otherNumbers.every(n => (n/2) >= 10); hasInNumbers; // true hasInOtherNumbers; //false
Все элементы массива numbers
подходят под условие – поэтому метод every
выдает нам значение true
.
А вот в массиве otherNumbers
под условие не подходит значение 10
, поэтому every
возвратит – false
.