찾아내기 - find, find_index, some, every

김민재·2023년 1월 30일
0
post-custom-banner

찾아내기

find

  • find는 걸러지는 값을 만나면 그 값을 즉시 리턴
  • 원하는 값을 찾으면 배열을 빠져나올 수 있는 최적화
function _find(list, predi){
  let keys = _keys(list)
  for(let i =0, len = keys.length; i<len; i++) {
    var val = list[keys[i]]
    if(predi(val))  return val;
  }
}

_find(users, function(user){
  return user.id === 20
}) 
  • find_index는 걸러지는 값을 만나면 그 값의 인덱스를 즉시 리턴
function _find_index(list, predi){
  let keys = _keys(list)
  for(let i =0, len = keys.length; i<len; i++) {
    if(predi(list[keys[i]]))  return i;
  }
  return -1
}
_find_index(users, function(user){
  return user.id === 2
}) 
  • get, go로 응용
var _find = _curryr(function _find(list, predi){
  let keys = _keys(list)
  for(let i =0, len = keys.length; i<len; i++) {
    var val = list[keys[i]]
    if(predi(val))  return val;
  }
})

_get(
_find(users, function(user){
  return user.id == 2
}), 'name')

_go(users, 
   _find(function(user){
  return user.id == 2
}),
    _get('name')
   ) 

some

  • 하나라도 만족하는 값 나오면 트루 반환
function _some(data, predi){
  predi = predi || _identity 
  return _find_index(data, predi || _identity) != -1;
}
// 하나라도 만족하는 값 나오면 트루 반환

_some([1,2,5,10,20], function(val){
  return val > 10
})
// every - 하나라도 거짓이면 펄스이면 리턴
function _every(data,predi){
  return _find_index(data,_negate(predi || _identity)) == -1
}

_every([1,2,5,10,20], function(val){
  return val > 3
})

// true
_every([1,2,0,10])
// false
_some([null, false, 0])

_some(users, function(user){
      return user.age>20
})
  • 함수형 프로그래밍은 이렇게 로직을 조합해나가는 방식
  • 모두 고차함수로 사용, 보조함수를 받음

    보조함수를 받아 이 것을 만족하는 것에 대한 값을 찾을 수 있음

profile
자기 신뢰의 힘을 믿고 실천하는 개발자가 되고자합니다.
post-custom-banner

0개의 댓글