Array.prototype.includes()

Array 인스턴스의 includes() 메서드는 배열의 항목에 특정 값이 포함되어 있는지를 판단하여 적절히 true 또는 false를 반환합니다.

시도해 보기

const array1 = [1, 2, 3];

console.log(array1.includes(2));
// Expected output: true

const pets = ["cat", "dog", "bat"];

console.log(pets.includes("cat"));
// Expected output: true

console.log(pets.includes("at"));
// Expected output: false

구문

js
includes(searchElement)
includes(searchElement, fromIndex)

매개변수

searchElement

찾을 값입니다.

fromIndex Optional

검색을 시작할 0 기반 인덱스로, 정수로 변환됩니다.

  • 음수 인덱스는 배열의 끝부터 거꾸로 셉니다. 즉, fromIndex < 0이면, fromIndex + array.length가 사용됩니다. 그러나, 이 경우에도 배열은 여전히 앞에서 뒤로 검색됩니다.
  • fromIndex < -array.length이거나 fromIndex가 생략되면, 0이 사용되어 전체 배열이 검색됩니다.
  • fromIndex >= array.length 이면, 배열은 검색되지 않고 false가 반환됩니다.

반환 값

배열(또는 fromIndex를 지정했다면, fromIndex 인덱스로 표시된 배열의 일부) 내에서 searchElement 값이 발견되면 true 불리언 값이 반환됩니다.

설명

includes() 메서드는 SameValueZero 알고리즘을 사용하여 searchElement를 배열의 요소와 비교합니다. 0 값은 부호에 관계없이 모두 동일한 것으로 간주됩니다. (즉, -00과 같지만), false0과 같은 것으로 간주되지 않습니다. NaN은 올바르게 검색될 수 있습니다.

희소 배열에 사용할 경우, include() 메서드는 빈 슬롯을 undefined로 간주하고 순회합니다.

includes() 메서드는 범용입니다. this 값에는 length 속성과 정수 키 속성만 있을 것으로 예상합니다.

예제

includes() 사용하기

js
[1, 2, 3].includes(2); // true
[1, 2, 3].includes(4); // false
[1, 2, 3].includes(3, 3); // false
[1, 2, 3].includes(3, -1); // true
[1, 2, NaN].includes(NaN); // true
["1", "2", "3"].includes(3); // false

fromIndex가 배열 길이보다 크거나 같은 경우

fromIndex가 배열의 길이보다 크거나 같으면 false가 반환됩니다. 배열은 검색되지 않습니다.

js
const arr = ["a", "b", "c"];

arr.includes("c", 3); // false
arr.includes("c", 100); // false

0보다 작은 인덱스 계산

fromIndex가 음수라면, 계산된 인덱스가 searchElement 검색을 시작할 배열의 위치로 사용되도록 계산됩니다. 계산된 인덱스가 0보다 작거나 같으면 전체 배열에서 검색됩니다.

js
// 배열 길이는 3
// fromIndex는 -100
// 계산된 인덱스는 3 + (-100) = -97

const arr = ["a", "b", "c"];

arr.includes("a", -100); // true
arr.includes("b", -100); // true
arr.includes("c", -100); // true
arr.includes("a", -2); // false

희소 배열에서 includes() 사용하기

희소 배열에서 undefined를 검색하면 true를 얻을 수 있습니다.

js
console.log([1, , 3].includes(undefined)); // true

배열이 아닌 객체에서 includes() 호출하기

includes() 메서드는 thislength 속성을 읽은 다음 키가 length보다 작은 음수가 아닌 정수인 각 속성에 접근합니다.

js
const arrayLike = {
  length: 3,
  0: 2,
  1: 3,
  2: 4,
  3: 1, // length가 3이므로 includes()에서 무시됩니다.
};
console.log(Array.prototype.includes.call(arrayLike, 2));
// true
console.log(Array.prototype.includes.call(arrayLike, 1));
// false

명세서

브라우저 호환성

같이 보기