Методы массивов: 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.