Sharryhong's Front-End
  • About Sharryhong's Front-End Blog.
  • Front-End Dev
    • Flutter
      • API Key 안전하게 숨기기. Cloudflare Workers!
      • Web CORS 에러
    • Vue.js
      • usePagination - composition api (vue2)
      • Pagination Component
      • Vue Image Skeleton
      • Sort an Array of Objects by Boolean property
      • Dynamic Components
      • LoadingBar Component
      • composition-api 사용하여 menu 의 outside click 시 close
      • vue+TypeScript
      • Vue.js 개발자를 위한 VS Code
      • Vue3 Chrome Extension
      • input file 선택된 파일 명 reset하기
      • element 내부 scroll 될 때, ScrollTop 값에 따라 div를 보이게, 안보이게 제어하기
      • 진입한 url path에 맞게 메서드 실행
    • React
      • 절대경로(absolute path) 설정, jsx파일로 이동 설정
      • useContext rerender issue
      • Firebase v9 Auth with React
      • Firebase v9 Realtime Database with React
      • React Star Rating (별점 표시)
      • React App deploying (배포)
    • Next.js
      • CSR, SSR, Next.js
    • API Mocking
      • Vue 에서 msw 적용하기
    • Storybook
      • styled-component theme.ts가 storybook엔 적용안되는 이슈
      • storybook에서 alias path 안되는 이슈
      • storybook에 Global Style 적용하기
  • etc
    • brew update
    • npm upgrade (mac)
  • DEV BETTER
    • Clean Code
      • Clean Code JavaScript 강의
        • Variables - 변수 다루기
        • Boundary - 경계 다루기
        • Conditional - 분기 다루기
        • Array - 배열 다루기
      • Tip. 클린 코드를 위한 5가지 팁
      • Tip. 코딩 잘하는 팁 3가지
    • 웹 성능 최적화 (performance)
      • performance 강의
        • loading, rendering performance
        • Tools
        • Image size optimization
        • bottleneck (병목) code 탐색
Powered by GitBook
On this page
  • 이슈
  • 해결 코드

Was this helpful?

  1. Front-End Dev
  2. Vue.js

Sort an Array of Objects by Boolean property

2022-07-14

PreviousVue Image SkeletonNextDynamic Components

Last updated 2 years ago

Was this helpful?

이슈

sort 기준

  • 1 순위 : isBookmarked === true 이고 isAble === true

  • 2 순위 : isBookmarked === true 이고 isAble === false

  • 3 순위 : isAble === true

기존코드는 위의 정렬 기준에 따라 if, else if를 사용하여 임시변수에 담는 방식으로 개발되어있었는데,

JavaScript Array 내장 메소드인 sort()를 사용하며 리팩토링 해보았습니다.

참고 자료

해결 코드

list
  .sort((a, b) => Number(b.isAble) - Number(a.isAble))
  .sort((a, b) => Number(b.isBookmarked) - Number(a.isBookmarked));

true = 1, false = 0 으로 값을 변경하여,

a - b 는 오름차순으로 정렬하므로, b - a 로 해야 true가 앞에 놓이게 됩니다.

Number(b.isAble) - Number(a.isAble) // isAble === true 인 순서대로 정렬시킵니다.

그 후 Number(b.bookmark) - Number(a.bookmark) // isBookmarked === true 인 순서로 정렬시키므로,

위에 명시한 sort 기준대로 정렬되게 됩니다.

https://bobbyhadz.com/blog/javascript-sort-array-of-objects-by-boolean-property
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort