Frontend

[vue3] 정렬

어코링 2024. 11. 10. 16:49

쌩 자바스크립트이 정렬은

1. 데이터를 정렬하고

2. HTML에 반영

 

Vue는 

1. 데이터 정렬하고 끝

-> {{데이터바인딩}} 해두면 HTML에 데이터가 실시간으로 반영 

 

sort() 함수

array.sort() 어레이 뒤에 sort하면 오름차순으로 정렬됨

사실은 문자 정렬을 하고 있음 (가나다순)

> 숫자 정렬은 sort() 함수 안에 funtion(a,b){a-b} 해줘야함

array.sort(function(a,b){return a-b})

 

이렇게 해야 1,2,3 숫자순 정렬

return값이 음수면 a를 왼쪽으로 보내줌 

 

*참고로 sort()하면 원본이 변형됨

map() filter()등은 원본을 보존해줌

 

요즘은 원본데이터를 보호하는것이 유행

data() {
    return {
      // originRooms : data,
      originRooms : [...data],
  }
}

array/object 데이터의 각각 별개의 사본을 만들려면 [...array자료]

 

 

  = 등호로 array를 집어 넣으면 왼쪽 오른쪽 값 공유하는 것이니 주의

    sortBack() {
      this.rooms = this.originRooms; 
    }
  sortBack() {
      this.rooms = [...this.originRooms]; 
    }

 


 

 


 

 

<template>
  <button @click="priceSort">가격순정렬</button>
  <button @click="sortBack">되돌리기</button>
</template>

<script>
export default {
  name: 'App',
  data() {
    return {
      // originRooms : data,
      originRooms : [...data],
      rooms : data,
    }
  },
  methods : {
    priceSort() {
      this.rooms.sort(function(a,b){return a.price-b.price})
    },
    sortBack() {
      this.rooms = [...this.originRooms]; 
    }
  }
}
</script>