당근먹는하니
귀엽고 행복해
당근먹는하니
전체 방문자
오늘
어제
  • 분류 전체보기 (274)
    • 다람쥐🐿 (26)
    • C++ 공부빵야 (7)
    • 공부👻 (5)
    • 프론트엔드✏️ (228)
      • 코드캠프 (120)
      • 팀 프로젝트✨ (31)
      • 개인공부 (67)
    • 프론트엔드 - 바닐라js (7)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 팀 프로젝트
  • 코드캠프
  • 자바스크립트
  • 부트캠프
  • javascript
  • javascrpit
  • JS
  • HTML
  • 배열
  • 코딩 부트캠프
  • typescript
  • react
  • 팀프로젝트
  • algorithm
  • 리액트
  • React-hook-form
  • 팀플
  • emotion
  • 배포
  • next.js
  • 프론트엔드
  • graphql
  • 알고리즘
  • 공통 컴포넌트
  • 프로그래머스
  • ssg
  • refreshtoken
  • 회고
  • CSS
  • 코딩

최근 댓글

최근 글

티스토리

250x250
반응형
hELLO · Designed By 정상우.
당근먹는하니

귀엽고 행복해

프론트엔드✏️/코드캠프

알고리즘 - filter, indexOf, isNaN

2022. 5. 19. 00:34
728x90
반응형

  filter

 

filter() 메서드는 주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환합니다.

(MDN)

 

f

arr.filter(callback,(element[, index[, array]])[, thisArg])
//배열   시험할 함수, 현재 요소, 현재 요소 인덱스, 호출한 배열, callback실행시 this로 사용하는 값

 thisArg가 이해가 안됨

 

만약 테스트를 통과한 요소가 없으면 빈 배열을 반환한다. 

호출되는 배열을 변화시키지 않고, 테스트를 통과하는 요소만 모아 새로운 배열로 반환한다.

 

//잘못된 코드
function solution(seoul) {
    var answer = '';
  	let kim = seoul.filter(word => word.includes("김서방"));
  
		console.log(kim)
    return answer;
}

Kim을 kim이라 쓰고 위에는 김서방이라고 쓴 것 자체가... 

 

 

  indexOf

배열의 원소 중 일치하는 값을 찾으면 그 인덱스를 반환한다.

arr = ["까치", "제비", "망고", "망고"];

let index = arr.indexOf("망고", 0) // 2
//"망고"라는 애를 인덱스 0부터 찾겠다. 
//찾은 맨 처음 위치만 반환함.

 

 

//잘못된 코드
function solution(seoul) {
    var answer = '';
  	let kim = seoul.indexOf("Kim", 0);
   	console.log(kim);
  	answer = ₩김서방은 ${kim}에 있다₩
    return answer;
}

solution(["Kim", "shin"]);

백틱... 왜 안돼..??! 

 

function solution(seoul) {
    var answer = '';
  	let kim = seoul.indexOf("Kim", 0);
   	console.log(kim);
  	answer = `김서방은 ${kim}에 있다.`
    return answer;
}

엥 다시 쓰니까 ₩ 모양이 바뀌더니 된다... 모야? ₩₩₩₩₩₩ ₩₩

 

  isNaN()

inNaN() 괄호 안에 있는 값이 숫잔지 숫자가 아닌지 판별한다.(숫자가 아닌 것엔 문자+숫자도 포함된다)

숫자가 아닐 경우 true, 숫자면 false

 

문자열 다루기 기본

//틀린 코드 . . 
function solution(s) {
    var answer = true;
	if((s.length === 4 || s.length === 6) && !(isNaN(s))) {
    
    answer = true;
  } else answer = false;
  
  return answer;
}

이거 틀렸대 왜지... 

0.33 도 true 떠서 그런가? 

 

function solution(s) {
    var answer = true;
	if((s.length === 4 || s.length === 6) && !(isNaN(s)) & !(s.includes(".")) & !(s.includes("e"))) {
    
    answer = true;
  } else answer = false;
  
  return answer;
}

뭔가 굉장히 무식한 코드를 작성한 기분.. 질문하기에 보니까 1e22 도 숫자로 인식한대서,, e를 자연상수로 보나봄 

그래서 그냥 빼줬다..^^! 

 

알고리즘 시간에 들어보니...! isNaN을 이용하긴 하는데, Number.isNaN과 문자를 하나씩 가져와서 하나라도 isNaN이 true라면 false를 반환하는 방법을 쓰셨다! 예외처리보다 더더더 괜찮은 방법이다 훨씬!!! 내가 한 방법은 그저 .과 e에 대응할 수 있을 뿐... 다른 게 또 있으면 예외처리하고 예외처리하고 예외처리해야하는데... 그리고 코드에 &&이 &로 써져있네'ㅁ';

 그리고 split(""), filter(el => { return isNAN(el) === true }) 써서 길이가 0보다 크면(문자가 하나라도 있으면) false를 반환하는 방법!!!진짜 이거 천재같아요,,, 근데 아직 filter랑 reduce 제대로 이해를 못했다ㅠㅠ

 

 이 뒤에 문제는 약수 문제였는데 못 풀었다. 

나누어 떨어지는 값이 약수인 간단한 걸 생각 못해서 약수 소인수 분해하고 그러고 있었다... 

이거 푸신 것도 완존 천재 같고 숫자의 반 넘는 약수는 없다는 걸 생각하시는 것도 완전 신기하다! 

728x90
반응형
저작자표시 비영리 동일조건 (새창열림)

'프론트엔드✏️ > 코드캠프' 카테고리의 다른 글

알고리즘 - 별 거 없음  (0) 2022.05.20
220518 프론트엔드 부트캠프 10일차 : 알고리즘 테스트, component 재사용  (0) 2022.05.19
220517 프론트엔드 부트캠프 9일차 : State, refetch, map  (0) 2022.05.18
알고리즘 - reduce, 삼항연산자  (0) 2022.05.18
ColorHighlight, emotion 폰트 추가  (0) 2022.05.18
    '프론트엔드✏️/코드캠프' 카테고리의 다른 글
    • 알고리즘 - 별 거 없음
    • 220518 프론트엔드 부트캠프 10일차 : 알고리즘 테스트, component 재사용
    • 220517 프론트엔드 부트캠프 9일차 : State, refetch, map
    • 알고리즘 - reduce, 삼항연산자
    당근먹는하니
    당근먹는하니

    티스토리툴바