자바스크립트 리뷰

문자열과 배열의 prototype에 메소드 추가하기: 특정 데이터가 문자열이나 배열에 들어가 있는지 확인하는 기능 [혼공자 6-2-2]

가문비7 2023. 4. 8. 12:39

검색 편의를 위해 제목에 다 썼다.

 

1) 일단 문자열에서 어떤 특정 문자열이 포함되었는지 여부를 확인하는 메소드다. 

      const j = "안녕하세요"
      String.prototype.contain = function(st) {
        return this.indexOf(st)>=0
      }

      string = "asdf"
      console.log(`'df' in ${string}:`,string.contain('df'));

indexOf() 는 배열이나 문자열에 파라미터로 입력한 값이 들어있으면 그 있는 위치를 0 이상의 정수로 return한다. 안 들어있으면 -1을 return 한다. 위의 코드는 그걸 이용했다.

return this.indexOf(st) >= 0 부분에서는 0 이상인지 그렇지 않은지 여부에 따라 true 나 false를 리턴할 것이다.

 

2) 다음은 array에서 특정 요소가 들어있는지 여부를 확인하는 메소드다.

      Array.prototype.contain = function(item){
      	if (item === undefined){
          return false
        } else {     
        return this.indexOf(item) >= 0
      	}
      array1 = ['안녕', 23, b={name: 'John', age: 30}, func1 = function (a,b){return a+b}]
      
      console.log(array1.contain(func1))
      console.log(array1.indexOf(23))

원리는 1)과 똑같다. item 위치에 배열에 들어갔는지 여부를 확인하고자 하는 요소를 넣어 준다. 콘솔창에서 true 나 false 혹은 not defined 에러를 출력한다.^^ if 문으로 해결하려 했으나 실패했다.