더스트스더
공대생블로그
더스트스더
전체 방문자
오늘
어제
  • 분류 전체보기 (20)
    • 코딩 (15)
      • 코테 (12)
    • 디지털월드 (2)
      • 통신 (1)
      • 회로 (1)
    • 에러 해결 (2)
    • 취준일기 (1)

블로그 메뉴

  • 글쓰기
  • 블로그 관리

공지사항

인기 글

태그

  • npm
  • 데이터통신
  • 프로토콜
  • Node.js
  • 통신
  • 자바스크립트
  • 논리회로

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
더스트스더

공대생블로그

[자바스크립트] 배열 내 참의 개수 구하기
코딩/코테

[자바스크립트] 배열 내 참의 개수 구하기

2022. 5. 31. 14:06

참은 몇 개인가?

배열에 있는 참 값의 수를 반환하는 함수를 만드시오.

예시

countTrue([true, false, false, true, false]) ➞ 2

countTrue([false, false, false, false]) ➞ 0

countTrue([]) ➞ 0

시도

해결 코드 1

for문

const countTrue = function(arr) {
    let count = 0;
    for (let i=0; i<arr.length; i++) if (arr[i]===true) count++;
    return count;
}

배열의 요소를 순회하며 요소가 true이면 count를 증가시키는 간단한 for문을 사용하였다.

해결 코드 2

배열 고차 함수 filter과 length 프로퍼티

const countTrue = arr => arr.filter(v=>v===true).length;

배열 고차 함수를 사용하였다. true인 요소만 반환되어 만들어진 새로운 배열의 length 프로퍼티로 참의 개수를 반환하게끔 하였다.

해결 코드3

filter(boolean)

const countTrue = arr => arr.filter(boolean).length;

filter(boolean) 트릭을 사용하여 가장 간단하게 표기할 수 있다.

배운 것

filter(boolean)

array.filter(Boolean)

// 위 코드와 동일하게 동작한다
// 가독성 있는 코드 vs 화려하고 간단한 트릭 中 원하는 것을 사용해라!
array.filter(item => Boolean(item));

filter(boolean)은 다음과 같이 동작한다 :

  1. 배열의 각 요소를 Boolean() 빌트인 전역 객체로 전달한다
  2. Boolean() 객체는 요소를 불리언 값(ToF)로 coerces(강제 변환)한다
  3. 참인 값만 keep한다

자바스크립트의 배열은 일반적인 배열과는 달리, 배열처럼 동작하는 객체로, 희소 배열을 허용하기 때문에 배열 내 undefined나 null값이 숨어있다면 배열의 모든 요소에 대해 작업을 수행하려고 할 때 오류가 발생하게 된다. 이 때 filter(Boolean) 트릭을 사용하면 간단하게 배열에서 희소 항목을 빠르게 제거할 수 있다.

참고 : https://michaeluloth.com/filter-boolean

'코딩 > 코테' 카테고리의 다른 글

[자바스크립트] 배열 속 부메랑 패턴의 개수 구하기  (0) 2022.06.01
[자바스크립트] 중복 기능의 불필요한 함수  (0) 2022.05.31
[자바스크립트] 성냥개비 하우스 문제  (0) 2022.05.23
[자바스크립트] 입력받은 정수까지의 합 구하기  (0) 2022.05.23
[자바스크립트] 배열의 최솟값과 최댓값 찾기  (0) 2022.05.23
    '코딩/코테' 카테고리의 다른 글
    • [자바스크립트] 배열 속 부메랑 패턴의 개수 구하기
    • [자바스크립트] 중복 기능의 불필요한 함수
    • [자바스크립트] 성냥개비 하우스 문제
    • [자바스크립트] 입력받은 정수까지의 합 구하기
    더스트스더
    더스트스더
    열심히살자

    티스토리툴바