이안의 평일코딩

[Vue] Vue의 기초(8) - sort 정렬, spread operator 본문

Front-end/Vue

[Vue] Vue의 기초(8) - sort 정렬, spread operator

이안92 2021. 4. 13. 14:43
반응형

 sort()

 

sort()는 문자정렬이 된다.

priceSort(){
  var array = [3,5,2];
  array.sort();
  console.log(array); // [2, 3, 5]
}

 

숫자정렬을 하려면 function(a,b)를 넣어 만든다. a - b가 음수면 a가 왼쪽으로 가면서 숫자 정렬이 된다.

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

 

spread operator

sort() 함수는 원본이 변형되므로 기존 데이터를 보존하기 위해서 spread operator [... 데이터]를 사용한다.

그러면 array/object 데이터의 각각 별개의 사본을 만들 수 있다. [...array자료]

spread operator를 사용하지 않으면 같은 값을 공유한다.

(map(), filter() 등은 원본을 보존해준다.)

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

<script>
import data from './assets/oneroom';

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

 

정렬기능 활용: 가격낮은순, 가격높은순, 가나다순, 되돌리기
<template>
  <button @click="priceLow">가격낮은순</button>
  <button @click="priceHigh">가격높은순</button>
  <button @click="sortABC">가나다순</button>
  <button @click="sortBack">되돌리기</button>
</template>

<script>
import data from './assets/oneroom';

export default {
  name: 'App',
  data(){
    return {
      oneroomOriginal : [...data],
      oneroom : data,
    }
  },
  methods : {
    priceLow(){
      this.oneroom.sort(function(a,b){
        return a.price - b.price
      });
    },
    priceHigh(){
      this.oneroom.sort(function(a,b){
        return b.price - a.price
      });
    },
    sortABC(){
      this.oneroom.sort(function(a,b){
        return a.title.localeCompare(b.title)
      });
    },
    sortBack(){
      this.oneroom = [...this.oneroomOriginal];
    },
  },
}
</script>
반응형
Comments