Существует распространенная задача, которую решают программисты на 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() зависит от того, нужно ли получить все подходящие элементы или только первый.
Перейти в телеграм, чтобы получить результаты теста






Забрать
Добавить комментарий