코딩쌀롱
Algorithm Day(배열 최소값 찾기, 문자열 자르기) 본문
📌 배열에서 최소값 찾기
✱하고 싶었던 것
// 5의 배수를 배열에 담아서 사용
const multipleOfFive = [];
for (let i = 40; i <= 100; i += 5){
multipleOfFive.push(i);
}
function getMinMultiple(grade) {
// multipleOfFive에서 grade값보다 크면서 최소값 반환
}
✱해결
✱Math.min.apply(null, arr);
function getMinMultiple(grade) {
Math.min.apply(null, multipleOfFive);
}
처음에는 배열에서 최소값을 찾는 방법을 구글링 해서 Math()메서드를 사용하려 했다.
그러나 이렇게 하면, multipleOfFive
배열의 모든 원소 중 최소값을 반환하기 때문에 grade값보다 크다는 조건을 추가하기 어렵다.
✱arr.find(callback);
// grade값보다 크면서 최소값 반환
function getMinMultiple(grade) {
return multipleOfFive.find(el => el > grade);
}
다음 방법으로는 find()메서드를 사용했다.
이렇게 하면 multipleOfFive
배열의 원소 중 콜백함수를 만족하는 첫 번째 요소를 반환한다. grade
보다 커야한다는 조건을 콜백에 쓰고, 최소값인 조건은 multipleOfFive 배열의 원소가 오름차순으로 정렬되어 있기 때문에 첫 번째 원소가 최소값일 수밖에 없다.
+ find() 메서드 구문
arr.find(callback(el, idx, arr), thisArg);
// idx, arr, thisArg는 optional
📌 문자열 자르기
✱하고 싶었던 것
'12:01:00AM' → 이렇게 들어오는 인자를 hh, mm, ss, apm으로 쪼개고 싶다.
✱해결
문자열을 자르는 방법에는 세 가지가 있다.
split()
substr(startIdx, length)
substring(startIdx, endIdx)
✱split()
const s = '12:01:00AM'
let arr = s.split(":"); // ['12', '01', '00AM']
이렇게 하면 콜론을 없앨 수는 있지만 '00AM을 또 쪼개줘야 한다.
그리고 새로운 값을 재할당할 때 변수에 또 할당해주거나, 베열의 인덱스로 접근해 재할당해줘야한다.
✱substr()
const s = '12:01:00AM'
let [hh, mm, ss, apm] =
[s.substr(0,2), s.substr(3, 2), s.substr(6, 2), s.substr(8, 2)];
이렇게 하면 원하는 만큼 문자열을 잘라서 변수에 할당할 수 있다.
또한 변수에 할당해줘서 값을 변경할 때도 편하다.
substring()
의 종료인덱스보다는 substr()
의 길이가 더 보기 좋은 것 같아 substr()
을 사용했다.
'개발공부' 카테고리의 다른 글
new Array(3).fill([ ]) 문제 (0) | 2020.12.20 |
---|---|
[프로그래머스_JS] 멀쩡한 사각형 (0) | 2020.12.18 |
Algorithm Day(배열중복제거, let, const) (0) | 2020.12.16 |
Algorithm Day(reduce, map, spread operator) (0) | 2020.12.16 |
Comments