JavaScript - 특정 값 찾기(find, filter)

lsjoon·2022년 12월 20일
0

JavaScript

목록 보기
23/32

특정 값 찾기

find

find 함수 는 배열에서 특정 값을 찾는 조건을 callback 함수 를 통해 전달

arr.find(callbk(element[, index[, array]])[, thisArg]

callbk
: 배열의 각 값에 대해 실행할 함수

callbk 함수가 갖는 3개의 인자값
  - element : 현재 처리중인 element
  - index : 현재 처리중인 배열의 index
  - array : find()를 호출한 배열

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

return

주어진 판별 함수를 만족하는 첫 번째 요소의 값
그 외에는 undefined

예시

const fruits = [
  {name: 'apple', price : 1000}, 
  {name: 'banana', price : 2000},
  {name: 'apple', price: 3000}
];

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

const apple = fruits.find(isApple);
console.log(apple.name); 				// apple
console.log(apple.price); 				// 1000

const subject = [
    {name: 'Kor',  grade: 'A'},
    {name: 'Eng', grade: 'B'},
    {name: 'Math',  grade: 'C'},
    {name: 'Phyc',     grade: 'D'},
    {name: 'Sci',  grade: 'E'}
];

let result = subject.find(function(item, index){ 
  console.log(`${index}번째 index`);
  return item.name === 'Eng'
});

// 1번째 index

console.log(result);				
// {name: "Eng", grade: "B"}

findIndex()

callback 함수 의 조건에 부합하는 배열의 첫번째 index 값을 반환

예시

const subject = [
    {name: 'Kor'},
    {name: 'Eng'},
    {name: 'Math'},
    {name: 'phyc'}
];

let result = subject.findIndex(function(item) { 
	return item.name === 'Math'
});

console.log(result);				// 2

filter

filter 함수 는 배열에서 특정 값을 찾는 조건을 callback 함수 를 통해 전달

arr.filter(callbk(element[, index[, array]])[, thisArg])

callbk
: 조건을 비교할 callback 함수

callbk 함수가 갖는 3개의 인자값
  - element : 현재 처리중인 element
  - index : 현재 처리중인 배열의 index
  - array : filter()를 호출한 배열

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

return

테스트를 통과한 요소로 이루어진 새로운 배열을 반환
조건을 만족하는 값이 없으면 빈 배열을 반환

예시

const arr = ["월요일", "화요일", "수요일", "목요일", "금요일"];

const result = arr.filter((_, index) => index % 2 !== 0);

console.log(result);					// [ '화요일', '목요일' ]
console.log(result.length);				// 2

const numbers = [1, 2, 3, 4, 5];

const result = numbers.filter(num => {
    numbers.push(num);
    return num > 3;						// num이 3 이상일 때만 return
});

console.log(result);					// [4, 5]

const numbers = [1, 2, 3, 4, 5];

const newNumberes = numbers.filter(num => {
    if (num > 1 && num < 5) {
        return true;
    } 
    else {
    	return false;
    }
});

console.log(newNumberes);				// [2, 3, 4]
profile
중요한 것은 꺾여도 그냥 하는 마음

0개의 댓글