《vue3实战》通过indexOf方法实现电影评价系统的模糊查询功能

这篇具有很好参考价值的文章主要介绍了《vue3实战》通过indexOf方法实现电影评价系统的模糊查询功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

一、indexOf是什么?indexOf有什么作用?

含义:

作用:

二、功能实现

这段是查询过程中过滤筛选功能的代码部分:

分析:

这段是查询用户和性别功能的代码部分:

分析:

三、最终效果图

查询输入框所在图:

输入姓名羊和性别男模糊查询后的效果图:

输入姓名羊和性别女模糊查询后的效果图:

单独输入姓名狼模糊查询后的效果图:

总结


前言

电影评价系统的模糊查询是什么?它的作用体现在哪些方面?

电影评价系统的模糊查询是一种查询方法,用于在用户输入的关键词中进行模糊匹配,而不仅仅是精确匹配。这种查询方法可以查找到与关键词相关的结果,即使关键词的拼写或格式有所不同。

模糊查询的作用体现在以下方面:

  1. 提高用户体验:模糊查询可以更好地满足用户的搜索需求,即使用户输入的关键词存在一定的拼写错误或格式差异,也能够找到相关的结果。这样可以提高用户对系统的满意度,并减少他们需要进行多次尝试的次数。
  2. 扩展搜索结果:模糊查询可以使系统返回更全面的搜索结果。通常来说,精确匹配可能会忽略一部分相关的内容,而模糊查询可以找到更多满足用户要求的结果,包括拼写相似或格式近似的内容。
  3. 对应多样性需求:不同用户对于搜索结果的要求可能存在一定的差异。一些用户可能更关注特定类型的电影,而另一些用户可能更注重演员、导演等相关信息。通过模糊查询,系统能够根据用户输入的关键词,提供更加符合他们需求的搜索结果。
  4. 灵活匹配多种场景:在电影评价系统中,用户可能输入的关键词包括电影名称、演员、导演、电影类型等。模糊查询可以在这些不同的场景下,根据用户输入的关键词进行模糊匹配,找到与之相关的电影评价。

一、indexOf是什么?indexOf有什么作用?

含义:

indexOf是一个JavaScript数组的方法,用于在数组中查找指定元素的索引。

作用:
  1. 查找元素:indexOf可以用来判断数组中是否存在某个元素。如果指定元素存在于数组中,则返回第一次出现的索引;如果不存在,则返回-1。

  2. 根据索引操作数组:知道元素在数组中的索引,我们可以使用这个索引来访问、修改和删除数组中的元素。

  3. 判断元素是否唯一:由于indexOf只返回第一次出现的索引,可以通过它来判断一个元素在数组中是否是唯一的。

二、功能实现

这段是查询过程中过滤筛选功能的代码部分:

《vue3实战》通过indexOf方法实现电影评价系统的模糊查询功能,vue,vue.js,javascript,前端

分析:

  1. 如果this.userForm.userName不为空且this.userForm.sex不为空:

    • 通过user.username.indexOf(this.userForm.userName) >= 0判断用户的用户名是否包含了this.userForm.userName,如果是则返回true,否则返回false。
    • 通过user.sex.indexOf(this.userForm.sex) >= 0判断用户的性别是否包含了this.userForm.sex,如果是则返回true,否则返回false。
    • 只有当用户名和性别都满足条件时,才返回true。
  2. 如果this.userForm.userName不为空且this.userForm.sex为空:

    • 通过user.username.indexOf(this.userForm.userName) >= 0判断用户的用户名是否包含了this.userForm.userName,如果是则返回true,否则返回false。
    • 只有当用户名满足条件时,才返回true。
  3. 如果this.userForm.userName为空且this.userForm.sex不为空:

    • 通过user.sex.indexOf(this.userForm.sex) >= 0判断用户的性别是否包含了this.userForm.sex,如果是则返回true,否则返回false。
    • 只有当性别满足条件时,才返回true。
  4. 如果this.userForm.userName为空且this.userForm.sex为空:

    • 直接返回true,表示不对用户名和性别进行筛选。

           因此,这段代码的功能是根据用户输入的条件对用户进行筛选,可以根据用户名和性别分别进行筛选,也可以只根据其中一个条件进行筛选,同时也支持不设定任何筛选条件。

这段是查询用户和性别功能的代码部分:

          《vue3实战》通过indexOf方法实现电影评价系统的模糊查询功能,vue,vue.js,javascript,前端

分析:

  1. 通过this.courses.filter(this.filterRule)使用filterRule函数对this.courses数组进行筛选,得到符合条件的用户数据,并赋值给this.newCourses数组。

  2. 通过this.newCourses.length获取this.newCourses数组的长度,即符合条件的用户数量,并将其赋值给this.total变量。

  3. 根据用户输入的分页参数,计算出当前页显示的用户数据的起始索引和结束索引,并赋值给startend变量。

  4. 通过this.newCourses.slice(start, end)startend为范围,获取this.newCourses数组中对应范围的用户数据,并将其赋值给this.pageMess变量。

        因此,这段代码的功能是根据用户输入的筛选条件,对this.courses数组中的用户数据进行筛选,并根据分页参数获取对应页码的用户数据,最终将符合条件的用户数据赋值给this.pageMess变量,并更新this.total变量以反映符合条件的用户总数量。

三、最终效果图

查询输入框所在图:

《vue3实战》通过indexOf方法实现电影评价系统的模糊查询功能,vue,vue.js,javascript,前端

输入姓名羊和性别男模糊查询后的效果图:

《vue3实战》通过indexOf方法实现电影评价系统的模糊查询功能,vue,vue.js,javascript,前端

输入姓名羊和性别女模糊查询后的效果图:

《vue3实战》通过indexOf方法实现电影评价系统的模糊查询功能,vue,vue.js,javascript,前端

单独输入姓名狼模糊查询后的效果图:

《vue3实战》通过indexOf方法实现电影评价系统的模糊查询功能,vue,vue.js,javascript,前端

四、代码块

 <div style="margin-left: 150px;margin-top: 0px">
                  <span><input type="text" placeholder="请输入姓名" v-model="userForm.userName"></span>
                  <span><input type="text" placeholder="请输入性别" v-model="userForm.sex"></span>
                  <button @click="queryUser()"
                          style="background-color: #1989fa;border-radius:5px;width:60px;height:30px">
                    查询
                  </button>
</div>

  mounted() {

    this.$watch('userForm.page.userPage', function () {
      if (this.userForm.userName == "" && this.userForm.sex == "") {
        if (this.userForm.page.userPage > Math.ceil(this.courses.length / this.userForm.page.pageSize) || this.userForm.page.userPage < 0) {
          this.userForm.page.userPage = 1;
        }
        let start = (this.userForm.page.userPage - 1) * this.userForm.page.pageSize;
        let end = (this.userForm.page.userPage * this.userForm.page.pageSize);
        this.pageMess = this.courses.slice(start, end);
      } else if (this.userForm.userName != "" && this.userForm.sex == "") {
        if (this.userForm.page.userPage > Math.ceil(this.newCourses.length / this.userForm.page.pageSize) || this.userForm.page.userPage < 0) {
          this.userForm.page.userPage = 1;
        }
        let start = (this.userForm.page.userPage - 1) * this.userForm.page.pageSize;
        let end = (this.userForm.page.userPage * this.userForm.page.pageSize);
        this.pageMess = this.newCourses.slice(start, end);
      } else if (this.userForm.userName == "" && this.userForm.sex != "") {
        if (this.userForm.page.userPage > Math.ceil(this.newCourses.length / this.userForm.page.pageSize) || this.userForm.page.userPage < 0) {
          this.userForm.page.userPage = 1;

        }
        let start = (this.userForm.page.userPage - 1) * this.userForm.page.pageSize;
        let end = (this.userForm.page.userPage * this.userForm.page.pageSize);
        this.pageMess = this.newCourses.slice(start, end);
      } else if (this.userForm.userName != "" && this.userForm.sex != "") {
        if (this.userForm.page.userPage > Math.ceil(this.newCourses.length / this.userForm.page.pageSize) || this.userForm.page.userPage < 0) {
          this.userForm.page.userPage = 1;
        }
        // let start = (this.userForm.page.userPage - 1) * this.userForm.page.pageSize;
        // let end = (this.userForm.page.userPage * this.userForm.page.pageSize);
        // this.pageMess = this.newCourses.slice(start, end);
        let start = (this.userForm.page.userPage - 1) * this.userForm.page.pageSize;
        let end = (this.userForm.page.userPage * this.userForm.page.pageSize);
        this.pageMess = this.newCourses.slice(start, end);
      }
    })
  },
  methods: {
    filterRule(user) {
      if (!(!this.userForm.userName) && this.userForm.sex != "") {
        return user.username.indexOf(this.userForm.userName) >= 0
            && user.sex.indexOf(this.userForm.sex) >= 0;
      } else if (!(!this.userForm.userName) && this.userForm.sex.length == 0) {
        return user.username.indexOf(this.userForm.userName) >= 0
      } else if (this.userForm.userName.length == 0 && !(!this.userForm.sex)) {
        return user.sex.indexOf(this.userForm.sex) >= 0
      } else {
        return true
      }
    },
    queryUser() {
      // this.newCourses = this.courses.filter(this.filterRule)
      this.newCourses = this.courses.filter(this.filterRule)
      this.total = this.newCourses.length
      // debugger
      let start = (this.userForm.page.userPage - 1) * this.userForm.page.pageSize;
      let end = (this.userForm.page.userPage * this.userForm.page.pageSize);
      this.pageMess = this.newCourses.slice(start, end);//[0,5)
    },


总结

        总的来说,模糊查询可以提高用户搜索的准确性和满意度,并增加搜索结果的完整性和多样性。它能够更好地满足用户在电影评价系统中的搜索需求。

       总之,indexOf是一个用于查找数组中指定元素索引的方法,可以方便地对数组进行操作和判断。

       这篇博客展现了电影评价系统的模糊查询功能,以后还会给大家展现更多关于电影评价系统的其他功能的实现,感谢大家多多支持!

    希望这篇博客能给各位朋友们带来帮助,最后请来过的朋友们留下你们宝贵的三连以及关注,感谢你们!文章来源地址https://www.toymoban.com/news/detail-682522.html

到了这里,关于《vue3实战》通过indexOf方法实现电影评价系统的模糊查询功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue3+springboot通过websocket实现实时通信

    本文章使用vue3+springboot通过websocket实现两个用户之间的实时通信,聊天信息使用mongodb非关系型数据库进行存储。 效果图如下: 用户发送信息  农户收到信息并发送回去 后台消息打印 引入依赖   配置 在config目录下, 创建WebSocketConfig类 创建一个WebSocketServer来 处理连接 用户

    2024年02月05日
    浏览(44)
  • 通过anvt X6和vue3实现图编辑

    通过anvt X6 X6地址:https://x6.antv.antgroup.com/tutorial/about; 由于节点比较复杂,使用vue实现的节点; x6提供了一个独立的包 @antv/x6-vue-shape 来使用 Vue 组件渲染节点。 VUE3的案例: 节点组件内容如下: 效果如下:代码运行的效果可以进行拖动进程图 后记:画布进行缩放之后不是

    2024年02月13日
    浏览(31)
  • 通过.NET Core+Vue3 实现SignalR即时通讯功能

    .NET Core 和 Vue3 结合使用 SignalR 可以实现强大的实时通讯功能,允许实时双向通信。在这个示例中,我们将详细说明如何创建一个简单的聊天应用程序,演示如何使用 .NET Core SignalR 后端和 Vue3 前端来实现实时通讯功能。 确保你已经安装了以下工具和环境: .NET Core Node.js Vue C

    2024年02月05日
    浏览(43)
  • 记录分享vue3通过web3.js连接MetaMask的流程及签名、验签方法

    记录下web3.js连接,希望对像我一样的小白有帮助。废话不多说,开整! 一、先在浏览器上面下载 小狐狸MetaMask插件,然后创建账户,创建成功之后默认连接的是以太坊 Ethereum 主网络,如果有相关网络的信息(如RPC URL和和链id等,可以自己添加,没有就先不管)。  二、本地项

    2024年02月06日
    浏览(57)
  • vue3中如何实现通过点击不同的按钮切换不同的页面

    完成以上需求,我们可以使用vue中的component标签来实现。 component是Vue.js中一个特殊的标签,用于动态地绑定其它组件。它可以与v-bind:is指令一起使用,来决定要渲染哪个组件。下面是示例代码

    2024年02月09日
    浏览(54)
  • Vue项目实战——实现一个任务清单【基于 Vue3.x 全家桶(简易版)】

    内容 参考链接 Vue2.x全家桶 Vue2.x 全家桶参考链接 Vue2.x项目(一) Vue2.x 实现一个任务清单 Vue2.x项目(二) Vue2.x 实现GitHub搜索案例 Vue3.x项目(三) Vue3.x 实现一个任务清单 1、前言 如果你对 vue3 的基础知识还很陌生,推荐先去学习一下 vue 基础 内容 参考链接 Vue2.x全家桶 Vu

    2024年02月02日
    浏览(81)
  • 【案例实战】NodeJS+Vue3+MySQL实现列表查询功能

    这篇文章,给大家带来一个列表查询的功能,从前端到后端的一个综合案例实战。 采用vue3作为前端开发,nodejs作为后端开发。 首先我们先来看一下完成的页面效果。点击分页,可以切换到上一页、下一页。搜索框可以进行模糊查询。 后端项目开发 好的,那么看完项目的演

    2024年02月06日
    浏览(45)
  • Vue3通过 directive 实现 el-dropdown下拉菜单项最小宽度等于内容宽度

    原始效果 最终效果 el-dropdown API 并不提供配置项让我们实现下拉菜单项最小宽度等于内容宽度,但我们能发现它提供了 popper-class 用于自定义浮层类名。 那么我们是否可以通过 popper-class 配置项来实现想要的功能呢?或者通过 el-dropdown-menu style=\\\"min-width: 100px;\\\" 这种形式进行最小

    2024年02月09日
    浏览(56)
  • vue3+element-plus 通过v-infinite实现下拉滚动无限加载

    v-infinite官网 v-infinite-scroll无限滚动组件使用详解  官网给到的基础案例: 自己写了一个简单的demo: 当使用v-infinite时,控制台会报错:  原因: 官方上的Issues解释是需要nextTick()之后再去显示 解决方法是组件挂载完成再去显示el-select组件 所以在上面demo中select组件加了v-if,

    2024年02月09日
    浏览(52)
  • Vue3集成ThreeJS实现3D效果,threejs+Vite+Vue3+TypeScript 实战课程【一篇文章精通系列】

    这是一个使用Vue3,TypeScript,Vite和Three.js的项目。Vue3是一个流行的JavaScript框架,用于构建用户界面。TypeScript是一种静态类型的编程语言,它是JavaScript的超集,可以编译成纯JavaScript。Vite是一个由Evan You开发的新的前端构建工具,能够提供快速的冷启动和即时热更新。 Three.j

    2024年02月03日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包