最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2018年08月30日 10:17:34   作者:Peggy7  
這篇文章主要介紹了vue 根據(jù)數(shù)組中某一項(xiàng)的值進(jìn)行排序的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧

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

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對(duì)象排序

<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ù)組順序。

二、代碼

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

<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)行排序,說(shuō)得更精確點(diǎn),是按照字符編碼的順序進(jìn)行排序。這并不是我們想要的排序方法,所以必須要傳參。

sort方法的參數(shù)是一個(gè)函數(shù),這個(gè)函數(shù)提供了一個(gè)比較方法,要比較兩個(gè)值,然后返回一個(gè)用于說(shuō)明這兩個(gè)值的相對(duì)順序的數(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)來(lái)排序,所以需要把這一項(xiàng)的key值傳進(jìn)來(lái)。

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ì)想到要這樣寫,但是寫出來(lái)之后發(fā)現(xiàn)三種情況不過是重復(fù)的代碼,這時(shí)我就直接用最上面兩行代碼來(lái)代替,寫完以后感覺內(nèi)心一片平和。這種復(fù)用率高的代碼簡(jiǎn)直讓人太舒服了。

三、結(jié)語(yǔ)

雖然是一個(gè)簡(jiǎn)單的功能,但是非常值得歸納總結(jié)一下。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue-cli-webpack搭建斗魚直播步驟詳解

    Vue-cli-webpack搭建斗魚直播步驟詳解

    斗魚直播是比較火的直播視頻,想必大家都看過吧。這篇文章主要介紹了Vue-cli-webpack搭建斗魚直播步驟詳解,需要的朋友可以參考下
    2017-11-11
  • 詳解Vue SSR( Vue2 + Koa2 + Webpack4)配置指南

    詳解Vue SSR( Vue2 + Koa2 + Webpack4)配置指南

    這篇文章主要介紹了詳解Vue SSR( Vue2 + Koa2 + Webpack4)配置指南,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2018-11-11
  • vue?文件切片上傳的項(xiàng)目實(shí)現(xiàn)

    vue?文件切片上傳的項(xiàng)目實(shí)現(xiàn)

    本文主要介紹了vue?文件切片上傳的項(xiàng)目實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 利用SpringMVC過濾器解決vue跨域請(qǐng)求的問題

    利用SpringMVC過濾器解決vue跨域請(qǐng)求的問題

    下面小編就為大家分享一篇利用SpringMVC過濾器解決vue跨域請(qǐng)求的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2018-02-02
  • vue this.reload 方法 配置

    vue this.reload 方法 配置

    這篇文章主要介紹了vue this.reload 方法 配置,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-09-09
  • Vue中使用event的坑及解決event is not defined

    Vue中使用event的坑及解決event is not defined

    這篇文章主要介紹了Vue中使用event的坑及解決event is not defined,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vue3中輕松實(shí)現(xiàn)switch功能組件的全過程

    vue3中輕松實(shí)現(xiàn)switch功能組件的全過程

    這篇文章主要給大家介紹了關(guān)于vue3中輕松實(shí)現(xiàn)switch功能組件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 詳解關(guān)于表格合并span-method方法的補(bǔ)充(表格數(shù)據(jù)由后臺(tái)動(dòng)態(tài)返回)

    詳解關(guān)于表格合并span-method方法的補(bǔ)充(表格數(shù)據(jù)由后臺(tái)動(dòng)態(tài)返回)

    這篇文章主要介紹了詳解關(guān)于表格合并span-method方法的補(bǔ)充(表格數(shù)據(jù)由后臺(tái)動(dòng)態(tài)返回) ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2019-05-05
  • vue中使用iframe嵌入網(wǎng)頁(yè),頁(yè)面可自適應(yīng)問題

    vue中使用iframe嵌入網(wǎng)頁(yè),頁(yè)面可自適應(yīng)問題

    這篇文章主要介紹了vue中使用iframe嵌入網(wǎng)頁(yè),頁(yè)面可自適應(yīng)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Vue實(shí)現(xiàn)生成二維碼的簡(jiǎn)單方式

    Vue實(shí)現(xiàn)生成二維碼的簡(jiǎn)單方式

    與后端生成二維碼相比,前端生成二維碼更具有靈活性,下面這篇文章主要給大家介紹了關(guān)于Vue實(shí)現(xiàn)生成二維碼的簡(jiǎn)單方式,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01

最新評(píng)論

蓝田县| 新和县| 安龙县| 张家川| 泰来县| 武乡县| 武隆县| 醴陵市| 巫山县| 茌平县| 梅州市| 铜鼓县| 利辛县| 仪征市| 天祝| 城口县| 文水县| 静海县| 呼图壁县| 克什克腾旗| 永寿县| 垫江县| 晋城| 四平市| 和田县| 永州市| 浙江省| 全州县| 景洪市| 济南市| 黄龙县| 淮安市| 日喀则市| 项城市| 屏东县| 淮滨县| 比如县| 临西县| 密山市| 虎林市| 丰镇市|