过滤器相关问题

Posted by CodingWithAlice on August 11, 2019

过滤器filter相关问题

①先简单了解一下过滤方法:

array.filter(function(currentValue,index,arr), thisValue)

filter() 方法:创建一个新的数组,新数组中的元素是通过检查指定数组中 符合条件的所有元素,如果没有符合条件的元素则返回空数组;不会对空数组进行检测;不会改变原始数组。

参数:当前元素的值currentValue必须;当前元素的索引值index 可选;当前元素属于的数组对象 arr 可选;

thisValue 可选,表示对象作为该执行回调时使用,传递给函数,用作 “this” 的值。如果省略了 thisValue ,”this” 的值为 “undefined”

/*我使用到的场景*/
res.data.items.filter(value=>{          
    return value.isTrue===1        
})

②过滤器可在new Vue实例前注册全局的,也可以在组件上写局部过滤器。

1.全局过滤器

/*过滤器名称global-Filter*/
Vue.filter('globa-lFilter', function (value) {return value + "000"})

2.组件过滤器(局部)

filters:{
    componentFilter:function(value){ return value + "111" }
},

注意:全局注册时是filter,没有s的。而组件过滤器是filters,是有s的,否则过滤器是没有效果的。

注册在局部的时候,一定不要写在methods里面,filter是一个与methods同级的,类似钩子一样的函数。

3.在计算属性中过滤

<li v-for="item in filterlist"></li> 
/*list是定义的一个数组*/ 
computed: {      
     filterlist () {           
         return this.list.filter(function (number) {
                    return number< 4                
         })            
     }     
 },

4.在methods里面的使用

<li v-for="item in filterlistFun()"></li>
/*list是定义的一个数组*/  		
methods:{
    filterlistFun(val){
         return this.list.filter(function (number) {
               return number < 4
         })
    }
}

③过滤器的使用方法

1.在双花括号插值 ok 2.在v-bind表达式中使用 <div v-bind:data="'ok' | globalFilter" ></div>

④过滤器的参数写法

1.** message是作为参数传给filterA 函数,而filterA 函数的返回值作为参数传给filterB函数,最终结果显示是由filterB返回的。调用的时候,只有一个参数。 2.** filterA的第一个参数是message,然后接下来的参数依次是‘arg1’,arg2。调用的时候,有三个参数。 3.a ‘a’和’b’分别作为参数传给filterB。

过滤器函数始终以表达式的值作为第一个参数。带引号的参数视为字符串,而不带引号的参数按表达式计算

可以设置两个过滤器参数,前提是这两个过滤器处理的不冲突