>  기사  >  웹 프론트엔드  >  JavaScript 배열의 indexOf 메소드에 대한 자세한 설명

JavaScript 배열의 indexOf 메소드에 대한 자세한 설명

黄舟
黄舟원래의
2017-03-03 15:14:301403검색

최근에 코드에 작은 문제가 발생했는데 이를 작은 예로 단순화하여 보여드리겠습니다.

주의를 기울이면 결국 보상을 받게 될 것입니다. 기초가 탄탄한 어린이 신발은 어레이형 사용으로 바로 점프할 수 있습니다.

indexOf라고 하면 누구나 익숙할 것입니다. 특히 문자열에 하위 문자열이 포함되어 있는지 판단할 때 자주 사용됩니다(정규 표현식에 익숙하지 않은 학생들에게 유용한 도구).

문자열 유형의 사용법

잘 알려진 문자열 사용법을 검토하세요. 예를 들어

let str = 'orange';

str.indexOf('o');  //0
str.indexOf('n');  //3
str.indexOf('c');  //-1

여기서 0과 3은 각각 Location 문자열에 나타나는 o와 n입니다. 시작 인덱스는 0입니다. 그리고 -1은 일치하는 항목이 없음을 의미합니다.

왜 -1이 null이 아니거나 정의되지 않았는지 묻는 사람이 있었습니다. 규칙을 만든 사람에게 물어보세요! 무기력한 표정.

여기서는 모두 흥미로운 내용을 볼 수 없습니다. 걱정하지 마세요. 여기에 또 다른 예가 있습니다

let numStr = '2016';

numStr.indexOf('2');  //0
numStr.indexOf(2);  //0

여기에서 볼 수 있는 작은 점은 indexOf가 간단한 유형 변환을 수행하고 숫자를 문자열 그런 다음 실행합니다. '2'

Number 유형의 사용법

유형은 암시적 변환을 수행하므로 number 메소드가 있는지 궁금할 것입니다! 아니요, 위의 예시 indexOf

let num = 2016;

num.indexOf(2);  //Uncaught TypeError: num.indexOf is not a function

에서는

유형에 number 메서드를 사용해야 합니까? 그런 다음 문자열로 변환한 다음 위의 예에서 indexOf

//二逼青年的写法
num = '2016';
num.indexOf(2);  //0

//普通青年的写法
num.toString().indexOf(2);  //0

//文艺青年的写法
('' + num).indexOf(2);  //0

를 작성합니다. 첫 번째 작성 방법은 간단하고 직접적이며 알려진 더 짧은 숫자에 대해서는 불가능하지 않습니다. 하지만 num 변수가 다른 데이터에 대해 변경되면 어떻게 해야 할까요?

두 번째 쓰기 방식이 가장 많이 사용되지만, 세 번째 쓰기 방식보다 조금 더 깁니다. ㅎㅎ 사실은 다 가능합니다. 3번 유형처럼 코드에 집착하는 분들

배열형 사용

여러분 힘내세요 대장님이 오십니다.

배열 방식은 다들 익히 알고 계시지만

배열 방식은 간과하셨네요(개인적인 느낌). indexOf

연습하지 않고 말만 했는데요, 어떤 문제에 주의해야 합니까?

let arr = ['orange', '2016', '2016'];

arr.indexOf('orange');  //0
arr.indexOf('o');  //-1

arr.indexOf('2016');  //1
arr.indexOf(2016);  //-1

여기에서는 예제를 자세히 설명하지 않았습니다. 네 가지 사용 사례만으로 문제를 설명할 수 있습니다.

  • arr.indexOf('orange')는 'orange'가 배열의 0번째 요소이므로 0을 출력하고, 인덱스가 일치하여 반환됩니다.

  • arr.indexOf('o')는 -1을 출력합니다. 이 메소드는 요소별로 indexOf 일치를 다시 수행하지 않기 때문입니다.

  • arr.indexOf('2016′)은 1을 출력합니다. 이 메소드는 모든 항목의 인덱스를 반환하는 대신 처음부터 일치 항목에 도달할 때까지 첫 번째 배열 요소의 다음 목록을 반환하기 때문입니다. 성냥.

  • arr.indexOf(2016) 출력 -1 참고: 여기서는 암시적 유형 변환이 수행되지 않습니다.

이제 함정이 발견되었으니 그 진상을 파헤쳐 보는 편이 나을 것 같습니다. MDN 공식 웹사이트를 방문하여 알아보세요. 이 주제에 관심이 있는 친구들은 Array.prototype.indexOf()로 직접 이동할 수 있습니다.

더 알고 싶은 분들을 위한 공식 설명은 다음과 같습니다.

indexOf()는 엄격한 동등성(=== 또는 삼중 등호 연산자에서 사용하는 것과 동일한 방법)을 사용하여 searchElement를 배열 요소와 비교합니다.

Clear at 여기서는 엄밀한 같음(

)을 사용합니다. 비슷한 판단을 내릴 때 좀 더 주의를 기울여 주시기 바랍니다. 숫자는 문자열로 변환되고 문자열은 숫자로 변환되지 않을 것이라고 생각하는 실수를 저지르지 마십시오. ===

요약

작은 지식 포인트의 축적은 심도 있는 논의를 위한 주제가 아니기 때문에 여기에서는 indexOf()의 두 번째 매개변수에 대한 설명은 생략하겠습니다. 아니요 알고 계시다면 여기에서 String.prototype.indexOf()를 살펴보신 후 위 배열에 대한 링크와 함께 두 번째 매개변수를 살펴보세요.

위 내용은 JavaScript 배열의 indexOf 메소드에 대한 자세한 설명입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.