过滤器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。
过滤器函数始终以表达式的值作为第一个参数。带引号的参数视为字符串,而不带引号的参数按表达式计算 ;
可以设置两个过滤器参数,前提是这两个过滤器处理的不冲突;