Development

[JavaScript] reduce method, spread syntax, computed property name, ternary operator

개발자 강정 2022. 1. 31. 16:13

사용된 개념: 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(삼항 연산자)를 이용하면 구문을 간결히 할 수 있다.