美文网首页
Vue数组过滤和排序

Vue数组过滤和排序

作者: 九瀺 | 来源:发表于2019-09-29 02:43 被阅读0次
 <div id="app">
        <input type="text" v-model="searchName">

        <ul>
            <li v-for="(item, index) in filterPerson" :key="index">
                {{index}}--{{item.name}}---{{item.age}}</li>
        </ul>      

        <button @click = "setCheckStatus(1)">升序</button>
        <button @click = "setCheckStatus(2)">降序</button>
        <button @click = "setCheckStatus(0)">复原</button>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script>       
        var vm = new Vue({
            el:"#app",
            data:{
                searchName:"",
                checkStatus:0,//0为初始状态吗 1为升序 2为降序
                persons:[
                    {name:"jack",age:18},
                    {name:"tom",age:17},
                    {name:"cat",age:16},
                    {name:"rose",age:19}
                ]
            },
            computed: {
                filterPerson(){
                    //取出相关数据
                    const {searchName,persons,checkStatus} = this
                    //定义最终现实的数组
                    let fPersons
                    //对persons进行过滤
                    // fPersons = persons.filter(function (item) {
                    //   return  item.name.indexOf(searchName) >=0
                    //  })
                    fPersons = persons.filter(item=>item.name.indexOf(searchName)!==-1)
                    //排序
                     if(checkStatus !==0){//判断状态码
                        fPersons.sort(function (item1,item2) {
                             //1为升序 2为降序
                             if(checkStatus==1){
                                return item1.age-item2.age
                             }else{
                                return item2.age-item1.age
                             }
                          })
                     }   
                    return fPersons
                }             
            },
            methods: {
                setCheckStatus(checkStatus){
                    //重置状态码
                    this.checkStatus = checkStatus
                }
            },
        })

    </script>

ffilter方法


定义和用法

filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
注意: filter() 不会对空数组进行检测。
注意: filter() 不会改变原始数组。
array.filter(function(currentValue,index,arr), thisValue)

Image.png
  • 返回值: 返回数组,包含了符合条件的所有元素。如果没有符合条件的元素则返回空数组。
fPersons = persons.filter(function (item) {
       return  item.name.indexOf(searchName) >=0
  })

sort方法

定义和用法

sort() 方法用于对数组的元素进行排序。
排序顺序可以是字母或数字,并按升序或降序。
默认排序顺序为按字母升序。
注意:当数字是按字母顺序排列时"40"将排在"5"前面。
使用数字排序,你必须通过一个函数作为参数来调用。
函数指定数字是按照升序还是降序排列。
注意: 这种方法会改变原始数组!。

Image [2].png

sort() 方法,有一个可选参数,必须是函数,供它调用。那么就是个回调函数咯!
回调函数的参数要有两个:第一个参数的元素肯定在第二个参数的元素前面!!!
这个方法的排序是看回调函数的返回值:
如果返回值大于 0,则位置互换。
如果返回值小于 0,则位置不变。

var arr = [9,7,2];
arr.sort(function(a,b){
    if(a>b) // 如果 a 大于 b,位置互换
        return 1;
    else //否则,位置不变
        return -1;});

相关文章

  • Vue数组过滤和排序

    ffilter方法 定义和用法 filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件...

  • 面试

    1、树型结构,过滤 2、数组去重,排序,深拷贝,取最大值 3、函数作用域、原型链 4、vue、vue-router...

  • 数组排序和过滤

    排序 NSComparatorNSOrderedAscending 表示 obj1 应该排在 obj2 前面NSO...

  • Vue 数组更新、过滤与排序

    数组更新 数组变异方法 mutation method Vue 包含一组观察数组的变异方法(mutation m...

  • Vue数组

      Vue为了增加列表渲染的功能,增加了一组观察数组的方法,而且可以显示一个数组的过滤或排序的副本。 变异方法  ...

  • JS数组方法速查

    1.数组去重 2.数组合并 3.数组排序(sort) 4.多维数组转一维数组(flat) 5.过滤数组(filte...

  • vue 根据数组对象里面的某个属性值进行从大到小,从小到大排序

    vue 表格里 根据数组对象里面的某个属性值进行从大到小,从小到大排序 (vue表格日期排序)

  • 不常用的一些方法的注意事项

    sort() 排序 用for-in 遍历数组过滤不符合的要求的key值 遍历数组 forEach() 为数组中含有...

  • mpvue v-for v-if 使用心得

    vue中 v-for 和 v-if 不要同时使用,需要过滤数组时候可用以下方法过滤 1.可以直接嵌套使用 2.推...

  • 数组过滤器

    数组过滤器 vue1.0中有一个数组过滤器叫做filterBy,在angular中叫filter,它接收3个参数 ...

网友评论

      本文标题:Vue数组过滤和排序

      本文链接:https://www.haomeiwen.com/subject/ibpxpctx.html