vue 实现数组筛选功能 filter过滤

相信小伙伴们都写过数组过滤吧。在某一个列表上面,有一个input框,搜索列表中的某个值,来进行筛选。

我们可以利用数组的filter方法来实现。

注:

  • v_tableList: 列表需要的数据
  • v_filterKeyword: 搜索框双向绑定的key
  • v_detailList: 后台拿的数据
computed: {
    v_tableList () {
      if (this.v_filterKeyword !== '') {
        let keyword = this.v_filterKeyword.toLowerCase()
        return this.v_detailList.filter(item => {
          // 以name来搜索
          let str = item.name.toLowerCase()
          return str.indexOf(keyword) !== -1
        })
      } else {
        return this.v_detailList || []
      }
    }
  }

搞定~

### Vue.js 中使用 `filter` 方法过滤数组Vue.js 应用程序中,可以利用 JavaScript 的内置 `filter()` 方法来创建一个新的数组,其中包含所有通过测试的元素。此方法不会改变原始数组。 #### 基本语法 ```javascript var newArray = oldArray.filter(function(item){ // 返回 true 或 false 来决定 item 是否应该被包含在 newArray 中 }); ``` 当与 Vue 结合时,在组件内部定义的方法或计算属性里调用该函数是非常常见的做法[^1]。 #### 实际案例展示 下面是一个具体的例子,展示了如何在一个 Vue 组件内运用 `filter()` 对数据列表进行筛选: 假设有一个简单的图书管理应用,每本书都有唯一的 ID 和名称。现在想要移除某一本指定ID的书籍记录。 ```html <div id="app"> <ul> <!-- 遍历 bookList 并渲染每一项 --> <li v-for="(book, index) in filteredBooks" :key="index">{{ book.name }} <button @click="removeBook(book.id)">Remove</button> </li> </ul> </div> <script src="https://cdn.jsdelivr.net/npm/vue@2"></script> <script> new Vue({ el: '#app', data: { books: [ { id: 1, name: 'JavaScript高级程序设计' }, { id: 2, name: '深入浅出计算机组成原理' }, { id: 3, name: '算法导论'} ] }, computed: { // 计算属性用于动态获取过滤后的书籍列表 filteredBooks() { return this.books; } }, methods: { removeBook(idToRemove) { // 更新 books 列表为不含有目标 id 的版本 this.books = this.books.filter((book) => book.id !== idToRemove); } } }) </script> ``` 在这个实例中,每当点击 "Remove" 按钮时,都会触发 `removeBook` 函数,并传入当前书籍的 ID 参数给它。这个函数会重新设置 `books` 属性为其自身经过 `filter()` 处理过的新副本——即去掉了具有匹配 ID 的对象之后的结果[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值