<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[JS contains: includes() для строк и массивов с примерами кода]]></title><description><![CDATA[<p dir="auto">Метод <strong>includes()</strong> в JavaScript проверяет, содержит ли строка или массив нужный элемент. Это простой способ избежать сложных циклов для поиска. Он вернёт <strong>true</strong> или <strong>false</strong>, что упрощает валидацию данных.</p>
<p dir="auto">С его помощью решают задачи вроде проверки ключевых слов в тексте или элементов в списке. Полезно для форм, фильтров и API-ответов. Далее разберём, как это работает на примерах.</p>
<h2>Как работает includes() для строк</h2>
<p dir="auto">Метод <strong>String.prototype.includes()</strong> ищет подстроку в строке и возвращает <strong>true</strong>, если нашёл, иначе <strong>false</strong>. Он чувствителен к регистру, так что “Java” и “java” — разные вещи. Второй аргумент задаёт позицию старта поиска, по умолчанию 0.</p>
<p dir="auto">Возьмём строку “The quick brown fox”. Проверка на “fox” даст <strong>true</strong>, а на “Fox” — <strong>false</strong>. Если искать пустую строку, всегда <strong>true</strong>. Это удобно для базовой валидации, но для сложных случаев нужен трюк с регистром.</p>
<p dir="auto">Вот базовый синтаксис:<br />
<code>строка.includes(подстрока, позиция)</code></p>
<ul>
<li><strong>true</strong> для найденной подстроки, включая пустую строку.</li>
<li><strong>false</strong>, если ничего не найдено.</li>
<li><em>Нюанс: не работает с регулярками, кинет TypeError.</em></li>
</ul>
<h3>Примеры поиска в строках</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Пример</th>
<th>Код</th>
<th>Результат</th>
</tr>
</thead>
<tbody>
<tr>
<td>Базовый поиск</td>
<td><code>'Быть или не быть'.includes('Быть')</code></td>
<td><strong>true</strong></td>
</tr>
<tr>
<td>С регистром</td>
<td><code>'Синий кит'.includes('синий')</code></td>
<td><strong>false</strong></td>
</tr>
<tr>
<td>С позицией</td>
<td><code>'Быть или не быть'.includes('Быть', 1)</code></td>
<td><strong>false</strong></td>
</tr>
<tr>
<td>Пустая строка</td>
<td><code>'текст'.includes('')</code></td>
<td><strong>true</strong></td>
</tr>
</tbody>
</table>
<p dir="auto">Для игнора регистра используй <code>toLowerCase()</code>:</p>
<pre><code class="language-javascript">const text = 'Синий кит';
console.log(text.toLowerCase().includes('синий'.toLowerCase())); // true
</code></pre>
<h2>includes() для массивов</h2>
<p dir="auto"><strong>Array.prototype.includes()</strong> проверяет наличие элемента в массиве, начиная с указанной позиции. Работает с примитивами и объектами по ссылке. Возвращает <strong>boolean</strong>, не меняет оригинал.</p>
<p dir="auto">Пример: массив контактов, проверка объекта. Сравнение по ссылке, так что одинаковые свойства не сработают без строгого равенства. Идеально для списков разрешённых значений.</p>
<p dir="auto">Синтаксис: <code>массив.includes(элемент, с_позиции)</code></p>
<ul>
<li>Ищет точное совпадение (===).</li>
<li><em>Объекты сравнивает по ссылке, не по содержимому.</em></li>
<li>Полезно для флагов: <code>permissions.includes('admin')</code>.</li>
</ul>
<h3>Сравнение с другими методами</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Метод</th>
<th>Что возвращает</th>
<th>Преимущества</th>
<th>Недостатки</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>includes()</strong></td>
<td><strong>true/false</strong></td>
<td>Простой, быстрый</td>
<td>Только boolean, чувствителен к типу</td>
</tr>
<tr>
<td>indexOf()</td>
<td>Индекс или -1</td>
<td>Получаешь позицию</td>
<td>Старый синтаксис</td>
</tr>
<tr>
<td>some()</td>
<td><strong>true/false</strong></td>
<td>Гибкий callback</td>
<td>Медленнее для простых задач</td>
</tr>
</tbody>
</table>
<p dir="auto">Пример для массива:</p>
<pre><code class="language-javascript">const contacts = [{name: 'Иван'}];
console.log(contacts.includes({name: 'Иван'})); // false — разные ссылки
</code></pre>
<h2>Обход чувствительности к регистру</h2>
<p dir="auto"><strong>includes()</strong> различает регистр, что часто мешает. Для поиска без учёта “Аа” преобразуй в нижний. Это стандартный хак для пользовательского ввода.</p>
<p dir="auto">В формach проверяй email-домены или ключевые слова. Без этого “Admin” и “admin” — разные. Комбинируй с <code>split()</code> для массивов слов.</p>
<p dir="auto">Шаги для нечувствительного поиска:</p>
<ul>
<li>Приведи обе строки к <code>toLowerCase()</code>.</li>
<li>Используй <strong>includes()</strong> на результате.</li>
<li><em>Для массивов: map() + includes()</em></li>
</ul>
<p dir="auto">Примеры:</p>
<pre><code class="language-javascript">const input = 'ADMIN ACCESS';
const required = 'admin';
console.log(input.toLowerCase().includes(required.toLowerCase())); // true
</code></pre>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Задача</th>
<th>Решение с toLowerCase()</th>
<th>Без него</th>
</tr>
</thead>
<tbody>
<tr>
<td>Поиск логина</td>
<td><strong>true</strong></td>
<td><strong>false</strong></td>
</tr>
<tr>
<td>Фильтр тегов</td>
<td>Работает</td>
<td>Пропускает</td>
</tr>
<tr>
<td>Email-домен</td>
<td>@gmail.com любой регистр</td>
<td>Только точный</td>
</tr>
</tbody>
</table>
<h2>Практические кейсы в проектах</h2>
<p dir="auto">В реальных задачах <strong>includes()</strong> фильтрует меню, валидирует URL или блокирует слова. Комбинируй с <code>Array.includes()</code> для прав доступа. Быстрее циклов, поддерживается везде.</p>
<p dir="auto">Проверь URL на домен: <code>window.location.href.includes('example.com')</code>. Для массивов — черные списки IP. <em>Не забывай типы: Number(1) !== ‘1’.</em></p>
<p dir="auto">Ключевые сценарии:</p>
<ul>
<li>Валидация форм (запрет мата).</li>
<li>Фильтры поиска.</li>
<li>Проверки ролей пользователей.</li>
</ul>
<pre><code class="language-javascript">const roles = ['user', 'admin'];
if (roles.includes(userRole)) { /* доступ */ }
</code></pre>
<h2>Когда includes() не хватит</h2>
<p dir="auto">Метод хорош для простоты, но уступает regex для шаблонов. <strong>match()</strong> найдёт все вхождения, <strong>indexOf()</strong> — позицию. Думай о производительности в больших данных.</p>
<p dir="auto">Осталось regex-интеграция и edge-кейсы вроде Unicode. Попробуй комбо с <code>test()</code> для гибкости. Это база, но в проде тестируй на реальных данных.</p>
]]></description><link>https://forum.exlends.ru/topic/502/js-contains-includes-dlya-strok-i-massivov-s-primerami-koda</link><generator>RSS for Node</generator><lastBuildDate>Sat, 17 Oct 2026 03:06:10 GMT</lastBuildDate><atom:link href="https://forum.exlends.ru/topic/502.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 12 Feb 2026 11:01:04 GMT</pubDate><ttl>60</ttl></channel></rss>