Клавиша / esc

.includes()

Проверяет, есть ли элемент в массиве или подстрока в строке.

Время чтения: меньше 5 мин

Кратко

Скопировано

Этот метод определён у массивов и строк.

Для массивов: проверяет, есть ли искомый элемент в массиве.

Для строк: проверяет, есть ли искомая подстрока в строке.

Возвращает true, если искомый элемент нашёлся, и false — если нет 😎

Пример

Скопировано

Метод принимает два аргумента — значение, которое нужно проверить, и позицию, начиная с которой необходимо проверять. Второй аргумент необязательный, он равен 0 по умолчанию.

Особенности использования второго аргумента

Скопировано

Если передать в качестве аргумента положительное значение или 0, поиск начнётся с этого индекса и до конца массива.

Если передать отрицательное значение, поиск начнётся с этого индекса, отсчитанного от конца массива, и будет происходить до конца массива. Для этого случая индекс начала поиска можно рассчитать по формуле длина массива/строки + переданное отрицательное число. Например, длина массива/строки — 10, переданный аргумент — -2. Начало поиска с позиции — 8, так как 10 + (-2) = 8.

Если второй аргумент больше длины массива/строки, то метод всегда будет возвращать false.

Массив:

        
          
          const dead = ['Джон Сноу', 'Джофри', 'Нед Старк', 'Король ночи']const isAryaDead = dead.includes('Арья Старк')console.log(isAryaDead)// falseconst isJoffreyDead = dead.includes('Джофри')console.log(isJoffreyDead)// trueconst isJohnDead = dead.includes('Джон Сноу', 1)console.log(isJohnDead)// false
          const dead = ['Джон Сноу', 'Джофри', 'Нед Старк', 'Король ночи']
const isAryaDead = dead.includes('Арья Старк')
console.log(isAryaDead)
// false

const isJoffreyDead = dead.includes('Джофри')
console.log(isJoffreyDead)
// true

const isJohnDead = dead.includes('Джон Сноу', 1)
console.log(isJohnDead)
// false

        
        
          
        
      

Строка:

        
          
          const text =  'Посмотри, ведь это рядом наша панда. Мы бежим с тобой как-будто от гепарда.'console.log(text.includes('панда'))// trueconsole.log(text.includes('Обезьяна'))// false// Поиск идёт с учётом регистраconsole.log(text.includes('Панда'))// false
          const text =
  'Посмотри, ведь это рядом наша панда. Мы бежим с тобой как-будто от гепарда.'

console.log(text.includes('панда'))
// true

console.log(text.includes('Обезьяна'))
// false

// Поиск идёт с учётом регистра
console.log(text.includes('Панда'))
// false

        
        
          
        
      

На практике

Скопировано

Николай Лопин советует

Скопировано

🛠 Используйте метод, когда нужно убедиться в том, что объект находится в массиве. Например, чтобы не добавить одно и то же значение дважды.

Открыть демо в новой вкладке

🛠 Будьте внимательны при передаче объектов в includes(). Если два объекта выглядят одинаково, это не обязательно один объект, потому что объекты хранятся по ссылке.

        
          
          const phoneContacts = [  { name: 'Иван', lastName: 'Таранов' },  { name: 'Игорь', lastName: 'Иванов' },  { name: 'Мама', lastName: '' },]console.log(phoneContacts.includes(  { name: 'Мама', lastName: '' }))// false
          const phoneContacts = [
  { name: 'Иван', lastName: 'Таранов' },
  { name: 'Игорь', lastName: 'Иванов' },
  { name: 'Мама', lastName: '' },
]

console.log(phoneContacts.includes(
  { name: 'Мама', lastName: '' }
))
// false

        
        
          
        
      

Здесь console.log() выведет false, так как мы создали новый объект, хотя он выглядит так же как и тот, что в массиве.