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 제대로 이해를 못했다ㅠㅠ
이 뒤에 문제는 약수 문제였는데 못 풀었다.
나누어 떨어지는 값이 약수인 간단한 걸 생각 못해서 약수 소인수 분해하고 그러고 있었다...
이거 푸신 것도 완존 천재 같고 숫자의 반 넘는 약수는 없다는 걸 생각하시는 것도 완전 신기하다!
'프론트엔드✏️ > 코드캠프' 카테고리의 다른 글
알고리즘 - 별 거 없음 (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 |