14. Vue 常用列表操作实例 – 根据关键字实现数组的过滤

需求

前面介绍了列表操作中的数据新增、删除的功能,本篇章来看看关键字查询的功能。

14. Vue 常用列表操作实例 - 根据关键字实现数组的过滤

处理步骤

  1. 在VM实例中定义「关键字」参数searchName.
        var vm = new Vue({
el: '#app',
data: {
searchName:'', // 关键字
....
},
  1. 要在「筛选框」绑定「关键字数据」到 VM 实例中的 searchName 属性,后续用来基于这个searchName来过滤数组数据。
<!-- 搜素关键字 -->
<input v-model="searchName" type="text" class="form-control" id="input_keywords" placeholder="输入关键字">

3.在使用 v-for 指令循环每一行数据的时候,不再直接 item in list,而是 in 一个 过滤的methods 方法,同时,把过滤条件searchName传递进去:

<tr v-for="item in search(searchName)" :key="item.id">
  1. 在VM实例的methods方法中定义过滤search()方法,在数据过滤的方法上,可以有两种处理方式。

4.1 首先创建一个新的数组newList,然后使用forEach方法遍历数据数组list,判断关键字searchName是否包含在遍历数据中,可以使用if (item.name.indexOf(searchName) != -1) 来进行判断,如果存在,那么则会为1,如果searchName为空值,则会0。在这种情况下,则将数据加入到新的数组newList中,然后提供列表渲染数据。

        methods: {
search(searchName) {
// 创建新的数组newList
var newList = [];
// 遍历数据,判断关键字是否存在,存在则加入newList中
this.list.forEach(item => {

// 如果indexOf为-1,则说明关键字不存在该字符串中,
// 反之,存在或者searchName为空字符串
if (item.name.indexOf(searchName) !== -1) {
newList.push(item)
}

});
// 将过滤后的newList返回,提供列表数据渲染
return newList
},
}

浏览器实现关键字搜索效果如下:

14. Vue 常用列表操作实例 - 根据关键字实现数组的过滤

4.2 除了使用forEach遍历数组外,还可以使用filter过滤数组。上面使用forEach方法还要自己创建一个newList来处理数据,而filter则是直接返回数组,不需要单独去创建。还有上面使用if (item.name.indexOf(searchName) != -1)来判断关键字是否包含在字符串中,这里还可以使用includes方法。

注意 :在ES6中,为字符串提供了一个新方法includes,叫做  String.prototype.includes('要包含的字符串'),如果包含,则返回 true ,否则返回 false

        methods: {

search(searchName) {

// 使用filter则是返回过滤的数据自动生成数组
return this.list.filter(item => {
// 注意 :ES6中,为字符串提供了一个新方法,
// 叫做 String.prototype.includes('要包含的字符串')
// 如果包含,则返回 true ,否则返回 false
// contain
if (item.name.includes(searchName)) {
return item
}
})

},
}

浏览器实现关键字搜索效果如下:

14. Vue 常用列表操作实例 - 根据关键字实现数组的过滤


交流QQ群:

14. Vue 常用列表操作实例 - 根据关键字实现数组的过滤

14. Vue 常用列表操作实例 - 根据关键字实现数组的过滤


点击下面,查看更多Vue系列文章

14. Vue 常用列表操作实例 - 根据关键字实现数组的过滤14. Vue 常用列表操作实例 - 根据关键字实现数组的过滤


14. Vue 常用列表操作实例 - 根据关键字实现数组的过滤



原文始发于微信公众号(海洋的渔夫):14. Vue 常用列表操作实例 – 根据关键字实现数组的过滤

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/32006.html

(1)
小半的头像小半

相关推荐

发表回复

登录后才能评论
半码博客——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!