成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

vue根據(jù)數(shù)組中某一項(xiàng)的值進(jìn)行排序的方法

vue中數(shù)組和對象的排序

創(chuàng)新互聯(lián)是一家專注于網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè)與策劃設(shè)計(jì),平頂山網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:平頂山等地區(qū)。平頂山做網(wǎng)站價(jià)格咨詢:13518219792

1數(shù)組排序

<div id="app">
  <ul>
   <li v-for="a in arr1">{{a}}</li>
  </ul>
 </div>
  <script type="text/javascript">
   new Vue({
    el:"#app",
    data:{
     arr:[1,4,5,2,3,44]
    },computed:{
     arr1:function(){
      return this.arr.sort(sortNum)//調(diào)用排序方法
     }
    }
   })
   function sortNum(a,b){//排序方法
    return a-b;
   }
  </script>

2對象排序

<div id="app">
   <ul>
    <li v-for="(stu,index) in students1">{{stu}}</li>
   </ul>
  </div>
  <script type="text/javascript">
   new Vue({
    el:"#app",
    data:{
     students:[
      {name:"小a",age:20},
      {name:"小b",age:21},
      {name:"小c",age:18},
      {name:"小d",age:19},
      {name:"小f",age:18}
     ]
    },
    computed:{
     students1:function(){
      return sortKey(this.students,'age')
     }
    }
   })
   function sortKey(array,key){
    return array.sort(function(a,b){
     var x = a[key];
     var y = b[key];
     return ((x<y)?-1:(x>y)?1:0)
    })
   }
  </script>

一、前言

我在vue項(xiàng)目中遇到了一個(gè)表格排序的需求,根據(jù)某一項(xiàng)的值的大小從大到小調(diào)整數(shù)組順序。

二、代碼

vue 根據(jù)數(shù)組中某一項(xiàng)的值進(jìn)行排序的方法

表格大概是這個(gè)樣子,樣式和圖片在代碼中簡化了。

<table class="recommend_table" cellspacing="0">
 <tr>
  <th>股票</th>
  <th @click="sort('in_price')">入選價(jià)</th>
  <th @click="sort('now_price')">最新價(jià)</th>
  <th @click="sort('increase')">模擬漲跌幅</th>
 </tr>
 <tr v-for="(item,index) in recommendlist" :key="index">
  <td>
   <div class="recommend_name">{{item.name}}</div>
   <div class="recommend_num">{{item.bn}}</div>
  </td>
  <td>{{item.in_price}}</td>
  <td>{{item.now_price}}</td>
  <td>{{item.increase}}%</td>
 </tr>
</table>

<script type="text/ecmascript-6">
 export default {
  data(){
   return{
    recommendlist: [
     { name:'高科石化', bn:'002778', in_price: 20.68, now_price: 28.68, increase: 10.01 },
     { name:'中孚信息', bn:'300659', in_price: 19.46, now_price: 17.46, increase: 9.06 },
     { name:'永福股份', bn:'300712', in_price: 17.68, now_price: 32.68, increase: 2.01 }
    ],
    sortType: 'in_price'
   }
  },
  methods: {
   sort(type) {
    this.sortType = type;
    this.recommendlist.sort(this.compare(type));
    // switch(type){
     // case 'in_price':
     //  this.sortType = 'in_price';
     //  this.recommendlist.sort(this.compare('in_price'));
     //  break;
     // case 'now_price':
     //  this.sortType = 'now_price';
     //  this.recommendlist.sort(this.compare('now_price'));
     //  break;
     // case 'increase':
     //  this.sortType = 'increase';
     //  this.recommendlist.sort(this.compare('increase'));
     //  break;
    // }
   },
   compare(attr) {
    return function(a,b){
     var val1 = a[attr];
     var val2 = b[attr];
     return val2 - val1;
    }
   }
  }
 }
</script>

1. 排序方法

這里用到的是數(shù)組的sort方法,這個(gè)方法有一個(gè)需要注意的地方,就是不傳參數(shù)的話,將按字母順序?qū)?shù)組中的元素進(jìn)行排序,說得更精確點(diǎn),是按照字符編碼的順序進(jìn)行排序。這并不是我們想要的排序方法,所以必須要傳參。

sort方法的參數(shù)是一個(gè)函數(shù),這個(gè)函數(shù)提供了一個(gè)比較方法,要比較兩個(gè)值,然后返回一個(gè)用于說明這兩個(gè)值的相對順序的數(shù)字。

  1. 若 a 小于 b,在排序后的數(shù)組中 a 應(yīng)該出現(xiàn)在 b 之前,則返回一個(gè)小于 0 的值。
  2. 若 a 等于 b,則返回 0。
  3. 若 a 大于 b,則返回一個(gè)大于 0 的值。
compare(key) {
 return function(a,b){
  var val1 = a[key];
  var val2 = b[key];
  return val2 - val1;
 }
}

在代碼中,compare函數(shù)中的匿名函數(shù)就是這樣一個(gè)函數(shù),但這個(gè)函數(shù)外面又嵌套了一層,這是因?yàn)樾枰鶕?jù)數(shù)組中的某一項(xiàng)來排序,所以需要把這一項(xiàng)的key值傳進(jìn)來。

2. 調(diào)用排序方法

sort(type) {
 this.sortType = type;
 this.recommendlist.sort(this.compare(type));
 // switch(type){
  // case 'in_price':
  //  this.sortType = 'in_price';
  //  this.recommendlist.sort(this.compare('in_price'));
  //  break;
  // case 'now_price':
  //  this.sortType = 'now_price';
  //  this.recommendlist.sort(this.compare('now_price'));
  //  break;
  // case 'increase':
  //  this.sortType = 'increase';
  //  this.recommendlist.sort(this.compare('increase'));
  //  break;
 // }
}

一開始我按照注釋的部分寫的,和我一樣抽象能力不是特別好的人首先會(huì)想到要這樣寫,但是寫出來之后發(fā)現(xiàn)三種情況不過是重復(fù)的代碼,這時(shí)我就直接用最上面兩行代碼來代替,寫完以后感覺內(nèi)心一片平和。這種復(fù)用率高的代碼簡直讓人太舒服了。

三、結(jié)語

雖然是一個(gè)簡單的功能,但是非常值得歸納總結(jié)一下。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

新聞名稱:vue根據(jù)數(shù)組中某一項(xiàng)的值進(jìn)行排序的方法
新聞來源:http://jinyejixie.com/article44/gcejhe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、響應(yīng)式網(wǎng)站、自適應(yīng)網(wǎng)站、企業(yè)建站電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
舞钢市| 望奎县| 丰都县| 永仁县| 钟祥市| 凤庆县| 博客| 乳源| 临汾市| 新绛县| 天祝| 广河县| 泾阳县| 子长县| 博客| 河间市| 泾阳县| 全椒县| 宝清县| 嘉兴市| 贵南县| 进贤县| 大洼县| 巴彦淖尔市| 高平市| 冕宁县| 藁城市| 贵州省| 娄烦县| 南丹县| 镇原县| 甘德县| 巢湖市| 大埔县| 佛山市| 治多县| 本溪| 调兵山市| 石城县| 武安市| 同仁县|