Вы можете использовать JavaScript-метод some()
, чтобы узнать, содержит ли массив JavaScript объект.
Этот метод проверяет, проходит ли хотя бы один элемент в массиве тест, реализованный предоставленной функцией. Вот пример, демонстрация, как это работает:
<script>
// Массив объектов
var persons = [{name: "Harry"}, {name: "Alice"}, {name: "Peter"}];
// Находим, содержит ли массив объект, сравнив значение свойства
if(persons.some(person => person.name === "Peter")){
alert("Объект найден внутри массива");
} else{
alert("Объект не найден");
}
</script>
Обратите внимание, что если попытаться найти объект внутри массива с помощью метода indexOf()
, такого как persons.indexOf({name: "Harry"})
, это не сработает (всегда возвращается -1
). Потому что два разных объекта не равны, даже если они выглядят одинаково (т.е. имеют одинаковые свойства и значения). Точно так же два различных массива не равны, даже если они имеют одинаковые значения в одном порядке.
Метод some()
поддерживается во всех основных браузерах, таких как Chrome, Firefox, IE (9 и выше) и т. д. Подробнее см. Руководство по функциям JavaScript ES6.