devlog_owen
자바스크립트 예제문제)연산자 - 홀수/짝수 구분,Truthy / Falsy 본문
728x90
// 숫자 배열을 입력받아서 홀수의 값만 합치는 함수를 완성해 보세요.
// result 값이 아래아 같이 출력되어야 합니다.
// for문, if문, %(나머지) 연산자를 사용해 보세요.
function sumOdd(arr) {
const oddNumbers = [];
for (let i = 0; i < arr.length; i++) {
if (typeof arr[i] === 'number' && arr[i] % 2 !== 0) {
oddNumbers.push(arr[i]);
}
}
const sum = oddNumbers.reduce((a, b) => a + b);
return sum;
}
const result = sumOdd([1, 2, 3, 4, 5]);
console.log(result); // 출력 결과: 9
배열 내 홀수들만 다시 재배열해서 그 요소들을 다 합치는 코드를 만들어야 했다. 배열 안의 요소들을 가지고 합치는건 reduce로 해결될거라 생각했다. 근데 for,if를 이용해서 코드 짜는게 어려웠다. 오늘 새로 안게 있다면
for (let i = 0; i < arr.length; i++) 이 부분이다. 반복문으로 배열 안의 i의 인덱스를 0부터 하나씩 처리하는데 배열의 길이가 넘는 i가 되면 루프가 멈추는 코드다.
코드를 치는데 항상 요즘 헷갈리는 거는 앞에 변수?를 지정하는 것이다, 예를 들어 sumOdd를 구해야하는데 length 앞에 arr 이 들어가야하는지 아니면 다른게 들어가야하는지 그런것들.
// 아래 함수는 배열을 입력받아서 배열 요소들 중 truthy한 요소들만 필터링하여 반환합니다.
// Truthy 란 boolean type을 기대하는 문맥에서 true 로 평가되는 값을 의미합니다.
// for문과 if문을 이용하여 작성해 보세요.
function getTruthyArray(arr) {
const truthyArr = [];
for(i=0; i<arr.length; i++){
if (arr[i]) {
truthyArr.push(arr[i]);
}
}
return truthyArr;
}
const result = getTruthyArray( [ -1, 0, "", {}, [], null, undefined, NaN ] );
console.log(result); // 출력 결과: [-1, {}, []]
사실 이건 어떻게 풀어야되지 감도 안온 문제였다. 그래서 위의 연산자 - 홀수/짝수 구분부터 먼저 풀었었다.
이문제도 for (let i = 0; i < arr.length; i++) 로 풀 수 있는 문제였다. if (arr[i]) 이 구문으로 배열 arr의 요소 i의 값이 true인지 확인하는게 포인트.
728x90
'algorithm > 자바스크립트 예제' 카테고리의 다른 글
자바스크립트 예제문제 문자열 길이,문자열 자르기,문자열 대체,문자열 분할,명시적 형변환 - 숫자 형변환 (1) | 2023.10.25 |
---|