Существует распространенная задача, которую решают программисты на JavaScript — поиск определенного объекта в массиве объектов по его идентификатору. Возьмем, например, следующий массив объектов:
var myArray = [{'id':'123','name':'Alice'},{'id':'456','name':'Bob'},{'id':'789','name':'Charlie'}];
В этом массиве каждый объект имеет свойства id
и name
. Объекты в массиве могут быть в любом порядке, и идентификаторы могут быть любыми строками или числами. Задача — найти объект с определенным идентификатором и получить доступ к его свойствам.
В JavaScript есть несколько способов решения этой задачи.
Использование метода filter()
Один из способов это использование метода filter()
, который доступен для всех массивов в JavaScript. Этот метод принимает функцию, которая вызывается для каждого элемента массива. Если функция возвращает true
, элемент остается в возвращаемом массиве.
var idToLookFor = "456"; var foundObject = myArray.filter(function(item) { return item.id === idToLookFor; })[0]; console.log(foundObject.name); // выведет "Bob"
Здесь функция фильтрации проверяет, равен ли идентификатор каждого объекта строке «456». После этого из полученного массива выбирается первый элемент.
Использование метода find()
Альтернативный способ — это использование метода find()
. Этот метод также принимает функцию, которая вызывается для каждого элемента массива. Однако, в отличие от filter()
, find()
возвращает первый элемент, для которого функция возвращает true
.
var idToLookFor = "456"; var foundObject = myArray.find(function(item) { return item.id === idToLookFor; }); console.log(foundObject.name); // выведет "Bob"
Этот код делает то же самое, что и предыдущий пример, но возвращает объект напрямую, а не в массиве.
Оба этих метода полезны, когда необходимо найти объект в массиве по определенному критерию. Выбор между filter()
и find()
зависит от того, нужно ли получить все подходящие элементы или только первый.
Добавить комментарий