Поиск и проверка значений в массиве на Javascript

Поиск и проверка значений в массиве на Javascript


25.04.2019
/
oberset

Примеры поиска значений в массиве с помощью методов find, findIndex, includes, every и других.

В спецификации ECMAScript 2015 (ES6) у объекта Array появилось несколько удобных методов для поиска и проверки элементов в массиве, поэтому давайте рассмотрим примеры использования каждого из них.

Поиск элемента с помощью методов find и findIndex

Если нужно найти определенный элемент в массиве, можно воспользоваться методом find:
const array = [0, 1, 2, 3, '4', 5, true, false];
const value = array.find(value => value == 1); // вернет 1

В метод find нужно передать функцию, которая в качестве параметра принимает текущий элемент массива и если значение элемента соответствует заданному условию, возвращает true. Эта функция вызывается для каждого элемента массива, до тех пор, пока очередной вызов не вернет true. Если вызов функции возвращает true, перебор массива прекращается и метод find возвращает найденный элемент.

Примеры поиска по значению свойства в массиве объектов:
const users = [{name: 'Andrew'}, {name: 'Sergey'}];
const userSergey = users.find(user => user.name === 'Sergey');

function getUserByField(users, field, value) {
return users.find(user => user[field] === value);
}

const userAndrew = getUserByField(users, 'name', 'Andrew');

Если в массиве несколько элементов удовлетворяют условию поиска, то find вернет первый найденный элемент. Если значение в массиве не найдено, то метод вернет undefined.

Метод findIndex аналогичен методу find, только вместо самого элемента он возвращает его индекс:

const array = [1, 2, 3];
// вернет 2 (индекс 3-го элемента массива)
const index = array.findIndex(value => value == 3);

Если значение в массиве не найдено, findIndex вернет -1.

Проверка значения в массиве

Если нужно просто проверить, что в массиве имеется определенное значение, без необходимости получать найденный элемент, то можно воспользоваться методами includes или every.

Метод includes возвращает true, если в массиве содержится искомое значение, в противном случае он возвращает false.

const array = [1, 3, 5];
if (array.includes(3)) {
console.log('Ура! В массиве есть значение 3!');
}

Метод includes использует строгое сравнение без приведения типа, поэтому число ноль, пуская строка и значение false считаются разными значениями.

const array = [false, true, null];
array.includes(0); // вернет false
array.includes(1); // вернет false

Для проверки значения в массиве можно также использовать более старый метод indexOf. Если значение найдено, он вернет индекс первого найденного элемента, если значение отсутствует, то вернет -1.

const array = [1, 2, 3, 4, 5];
array.infexOf(0); // вернет -1
array.infexOf(1); // вернет 0

Метод lastIndexOf работает также, как и indexOf, только производит поиск с конца массива.

Метод every возвращает true, если все элементы массива содержат искомое значение.

const array = [true, true, true];
array.every(value => value === true); // вернет true

В метод every нужно передать функцию, которая в качестве параметра принимает значение элемента массива и возвращает true или false в зависимости от результата проверки.

const array = [true, true, false];
array.every(value => value === true); // вернет false



Примеры использования Array reduce в Javascript

Метод reduce(callback, initialValue) возвращает результат функции callback, которая применяется к каждому элементу массива.

Поиск одинаковых элементов в массиве на Javascript

Для решения задачи можно написать обход массива в цикле, но у объекта Array уже есть несколько удобных методов, которые нам помогут.

Как в Javascript получить массив уникальных значений (unique array)?

Несколько наиболее простых вариантов получения массива уникальных(неповторяющихся) значений в Javascript.