본문 바로가기
JavaScript

[JS] 배열에 있는 값을 객체로 만드는 법(키:배열의 값, 값:해당 값의 개수)

by 1two13 2023. 3. 28.
728x90
반응형

배열에 있는 값을 객체로 만들고 싶었다.

키는 배열의 값으로, 키에 할당되는 값은 해당 값의 개수로 말이다.

 

예를 들어, [1, 3, 2, 5, 4, 5, 2, 3] 가 주어졌을 때, { '1': 1, '2': 2, '3': 2, '4': 1, '5': 2 } 이러한 객체로 만들고 싶었다. 

 

가장 많이 사용하는 방법과 한 줄의 코드로 간편하게 작성하는 방법 2가지를 가져왔다.

 

방법1

let tangerine = [1, 3, 2, 5, 4, 5, 2, 3]; 
let obj = {};

for (let i = 0; i < tangerine.length; i++) {
  let el = tangerine[i];
  if (obj.hasOwnProperty(el)) obj[el] += 1;
  else obj[el] = 1;
}

console.log(obj); // { '1': 1, '2': 2, '3': 2, '4': 1, '5': 2 }

객체의 hasOwnProperty 옵션을 사용하여 키가 있는 경우에는 해당 키에 +1 을 해주고, 키가 없는 경우에는 1을 할당하는 코드를 작성해줬다.

 

 

방법2

let tangerine = [1, 3, 2, 5, 4, 5, 2, 3]; 
let obj = {};

tangerine.forEach((el) => (obj[el] = (obj[el] || 0) + 1));

console.log(obj); // { '1': 1, '2': 2, '3': 2, '4': 1, '5': 2 }

마찬가지로 객체에 키가 있을 때는 객체의 값 + 1을 하고, 객체에 키가 없을 때는 1을 할당하는 코드를 작성해줬다. 

 

 


질문이나 잘못된 점은 댓글로 남겨주세요 :)💖

반응형

 

728x90
반응형

댓글