사용된 개념: spread syntax, computed property name, ternary operator
alphabets라는 array에 각 알파벳이 몇번씩 등장하는지 세는 object를 만들고 싶다.
let alphabets = ['a', 'a', 'b']
let countAlphabets = alphabets.reduce((value, alphabet) => {
if (!value[alphabet]) {
value[alphabet] = 1
} else {
value[alphabet] += 1
}
return value
},{})
> { a: 2, b: 1 }
reduce 메소드를 이용하여 위와 같이 구해볼 수 있을 것이다.
오늘은 아래와 같이 좀 더 멋있게(?) reduce 메소드를 쓰는 방법을 만났다.
let alphabets = ['a', 'a', 'b']
let countAlphabets = alphabets.reduce((value, alphabet) => {
return {
...value,
[alphabet]: value[alphabet] ? value[alphabet] + 1 : 1
}
},{})
> { a: 2, b: 1 }
value object에 계속 key, value를 누적시켜주기 위해서 spread syntax를 이용했다. {...value, <추가될 값>}
key값에 alphabet 변수 값을 넣어주기 위해서 computed property name 개념을 이용해서 []로 묶어줬다. 안 그러면 'alphabet'이라는 string 값이 들어갈 것이다.
if else문 대신에 ternary operator(삼항 연산자)를 이용하면 구문을 간결히 할 수 있다.
'Development' 카테고리의 다른 글
[TIL] 채팅방 만들기, 코딩테스트 (0) | 2022.02.01 |
---|---|
[TIL] socket.io (0) | 2022.01.31 |
[WIL] Node.js에 조금 더 익숙해진 일주일 (0) | 2022.01.30 |
[TIL] 코딩테스트, 회원가입 기능 프론트엔드까지 완성 (0) | 2022.01.29 |
[bootstrap] float, text, flexbox 정렬하기 (0) | 2022.01.29 |