# 객체를 value로 정렬하기

js에서 key와 value가 있는 object를 value 값을 기반으로 sorting하는 방법에 대해 알아보겠습니다!

여러 가지 방법으로 구현하고 입맛에 맞는 방법으로 구현하시면 될 것 같습니다

# for in문 활용 array 다시 만들기

for in문을 활용하여 새로운 array를 만들고 그곳에 객체를 push한 이후 만든 배열로 sort 하는 방법입니다.

const champ = {
  Aatrox: 300,
  Zoe: 60,
  Ahri: 200,
  Ashe: 1000,
  Garen: 400
};
var sortable = [];
for (var name in champ) {
  sortable.push([name, champ[name]]);
}

sortable.sort(function(a, b) {
  return a[1] - b[1];
});

// [["Zoe", 60], ["Ahri", 200], ["Aatrox", 300] ...

# Object.entries, reduce를 이용한 방법

es8이 지원되는 브라우저에서만 가능합니다

const champ = {
  Aatrox: 300,
  Zoe: 60,
  Ahri: 200,
  Ashe: 1000,
  Garen: 400
};

const sortable = Object.entries(champ)
  .sort(([, a], [, b]) => a - b)
  .reduce((r, [k, v]) => ({ ...r, [k]: v }), {});

console.log(sortable); // {Zoe: 60, Ahri: 200, Aatrox: 300, Garen: 400, Asche: 1000}

# Object.fromEntries()를 이용한 방법

es10 이상 브라우저에서 가능합니다

const champ = {
  Aatrox: 300,
  Zoe: 60,
  Ahri: 200,
  Ashe: 1000,
  Garen: 400
};

const test = Object.entries(champ).sort(([, a], [, b]) => a - b);
console.log(test); // [["Zoe", 60], ["Ahri", 200], ["Aatrox", 300], ["Garen", 400], ["Ashe", 1000]]

const sortable = Object.fromEntries(
  Object.entries(champ).sort(([, a], [, b]) => a - b)
);
console.log(sortable); // {Zoe: 60, Ahri: 200, Aatrox: 300, Garen: 400, Asche: 1000}
#JS
노경환
이 글이 도움이 되셨다면! 깃헙 스타 부탁드립니다 😊😄
최근변경일: 3/25/2024, 12:16:11 PM