JavaScript - 특정 값(의 위치) 찾기(match, indexOf, findIndex)

lsjoon·2022년 12월 20일
0

JavaScript

목록 보기
24/32

match, indexOf, findIndex

indexOf 와 findIndex

indexOf
파라미터로 primitive type을 받음
-primitive type 비교에 적합
-비교 연산자를 통해 배열과 비교

findIndexOf
파라미터로 callback 함수를 받음
-object type 비교에 적합
-값의 비교 뿐만 아니라 홀수값 찾기, 객체 비교 등 다양한 조건 정의 가능

match

str.match(regexp)

regexp
: 3가지 인자 중 1개를 가짐

  1. 찾을 문자(단어) = ("text")
  2. 정규식 = (/text)
  3. 매개변수 없음 = ()
정규식 규칙

match(/text) = 찾는 문자와 일치하는 문자열이 존재 시, 반환
match(/text/g) = 찾는 문자와 일치하는 모든 문자열 반환 (대소문자 구분)
match(/text/gi) = 찾는 문자와 일치하는 모든 문자열 반환 (대소문자 구분 X)

return

문자열이 정규식(찾을 문자)과 일치하면, 일치하는 문자열을 포함하는 배열을 반환
일치 하는 것이 없을 시 null 반환
매개변수를 할당하지 않을 시, 빈 문자열을 포함한 배열을 반환

예시

var str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
var regexp = /[A-E]/gi;
var matches_array = str.match(regexp);

console.log(matches_array);
// ['A', 'B', 'C', 'D', 'E', 'a', 'b', 'c', 'd', 'e']

const str = "coding everybody, everywhere, everytime";
let search = /every.+/gi;

console.log(str.match(search); 
// [everybody, everywhere, everytime]

indexOf

indexOf() 함수는 배열에서 지정된 요소를 찾을 수 있는 첫 번째 인덱스를 반환하고 존재하지 않으면 -1을 반환

arr.indexOf(searchElement[, fromIndex])

searchElement
: 배열에서 찾을 요소

fromIndex
: 검색을 시작할 index

return

배열 내 요소의 최초의 인덱스
발견되지 않으면 -1

예시

var array = [2, 9, 9];
array.indexOf(2);    		 // 0
array.indexOf(7);     		// -1
array.indexOf(9, 2);  		// 2
array.indexOf(2, -1); 		// -1
array.indexOf(2, -3); 		// 0

var result = [];
var array = ['a', 'b', 'a', 'c', 'a', 'd'];
var element = 'a';
var idx = array.indexOf(element);
while (idx != -1) {
  result.push(idx);
  idx = array.indexOf(element, idx + 1);
}
console.log(result);						// [0, 2, 4]

findIndex

findIndex() 함수는 제공된 callbk 함수 를 충족하는 배열의 첫 번째 요소의 인덱스를 반환, 테스트 함수를 만족시키는 요소가 없으면 -1이 반환

arr.findIndex(callbk(elem[, index[, array]][, thisArg])

callbk
: 배열의 각 요소에 실행할 함수

callbk가 받는 3가지 인자
  - elem : 현재 요소값
  - index : 현재 요소값의 index
  - array : findIndex()를 호출한 배열 

thisArg
: callbk 를 실행할 때 this 로 사용할 객체

return

배열 내 callbk 함수의 조건을 만족하는 첫 인덱스 반환
발견되지 않으면 -1

예시

const arr = [5, 6, 9, 1, 6, 3, 2, 1, 2, 7, 9, 4, 3];

const find1 = arr.findIndex((element, index, array) => {
    return index < 7 && index > 5;
});
const find2 = arr.findIndex((element, index, arr) => element === 3);
const find3 = arr.findIndex((e) => e > 8);
const find4 = arr.findIndex((e) => e > 10);

console.log('findIndex1:', find1);			// 6
console.log('findIndex2:', find2);			// 5
console.log('findIndex3:', find3);			// 2
console.log('findIndex4:', find4);			// -1

const arr = [
  {name : 'banana', price: 1000},
  {name : 'apple', price:1500},
  {name : 'orange', price: 2000}
];

function findApple(element)  {
  if(element.name === 'apple') return true;
}

console.log(arr.findIndex(findApple)); 			// 1
profile
중요한 것은 꺾여도 그냥 하는 마음

0개의 댓글