[JavaScript] 객체가 저장된 배열에서 여러 키로 정렬

9945 단어 JavaScript

이런 느낌의 배열이 있다면.

const items = [
  { id: "6", price: "340", name: "大根" },
  { id: "5", price: "230", name: "ポテト" },
  { id: "1", price: "100", name: "パセリ" },
  { id: "2", price: "340", name: "にんじん" }
]

가격 상승순으로 정렬하고 싶을 때

items.sort((a,b)=>a.price - b.price);
단순히 가격대로 오르고 싶다면 간단하다. 그러면 실현될 수 있다.
하지만 이 price만 같은 것이 있다면 id는 오르지 않습니다
const items = [
  { id: "1", price: "100", name: "パセリ" },
  { id: "5", price: "230", name: "ポテト" },
  { id: "6", price: "340", name: "大根" },
  { id: "2", price: "340", name: "にんじん" }
]
이렇게

가격 상승 순서대로 & 가격이 같으면 id 상승 순서대로


그러니까 내가 이렇게 하고 싶다는 거야.
const items = [
  { id: "1", price: "100", name: "パセリ" },
  { id: "5", price: "230", name: "ポテト" },
  { id: "2", price: "340", name: "にんじん" },
  { id: "6", price: "340", name: "大根" }
]

실현 방법

items.sort((a,b)=> {
  if(a.price > b.price) return 1
  if(a.price < b.price) return -1
  if(a.id > b.id) return 1
  if(a.id < b.id) return -1

  return 0;
});
이렇게 이루어질 수 있다.
두 개가 아니라 세 개, 네 개와 비교하려는 키가 늘었다면 조건 지점도 늘릴 수 있다.

추기


댓글에선생님께서 나에게 간결하게 쓰는 방법을 가르쳐 주셨기 때문에 나는 보충하여 기억할 것이다.
items.sort((a,b)=> (a.price - b.price) || (a.id - b.id) );

좋은 웹페이지 즐겨찾기