filter过滤函数-案例

分别用计算属性和监视属性来做。

<template>
  <div class="Leading">
    <h2>人员列表</h2>
    <input type="text" placeholder="请输入名字" v-model="keyword"><br>
    <!--    监视属性-->
    <ul>
      <li v-for="(item,index) in filPersons" :key="index">{{ item.name }}--{{ item.age }}--{{ item.sex }}</li>
    </ul>
    <!--    计算属性-->
    <ul>
      <li v-for="(item,index) in filPerson" :key="index">{{ item.name }}--{{ item.age }}--{{ item.sex }}</li>
    </ul>
  </div>
</template>

<script>
export default {
  name: "FilterTest",
  data() {
    return {
      persons: [
        {id: '001', name: '马冬梅', age: 18, sex: '女'},
        {id: '002', name: '周冬雨', age: 20, sex: '女'},
        {id: '003', name: '周杰伦', age: 19, sex: '男'},
        {id: '004', name: '温兆伦', age: 21, sex: '男'},
      ],
      keyword: '',
      filPersons: []
    }
  },
  //watch属性
  watch: {
    keyword: {
      immediate: true,//立即计算,返回数组值,不然为空。
      handler(val) {//keyworld的值
        this.filPersons = this.persons.filter((item) => {
//返回计算所得的数组
return item.name.indexOf(val) !== -1 }) // indexOf()如果不存在返回-1,如果存在返回字符串所在数组位置。 空字符串位于0位 } } }, // 计算属性 computed: { filPerson() { return this.persons.filter((p)=>{ return p.name.indexOf(this.keyword)!==-1 }) } } } </script>

 

posted @ 2022-08-23 10:09  一克嗽  阅读(42)  评论(0)    收藏  举报