品牌案例-根据关键字实现数组的过滤|学习笔记

简介: 快速学习品牌案例-根据关键字实现数组的过滤

开发者学堂课程【Vue.js 入门与实战品牌案例-根据关键字实现数组的过滤】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/586/detail/8145


品牌案例-根据关键字实现数组的过滤


内容简介:

一、 search 方法获取数据

二、 forEach+indexOf 方法过滤数据

三、 filter+includes 方法过滤数据

 

一、 search 方法获取数据

在搜索名称关键字输入内容,data 跟着其改变,表格中的数据也要随着进行相关的筛选。

页面中的业务表是通过代码中的 Vue 指令(v-for)循环限制出来的,当在搜索名称关键字文本框中输入内容,就会重新渲染出来一个表格,所以应该获取到最新的数据,就不能写死 list,如果写死list,永远拿到的都是 data 里面的 list,这样是不行的。

使用 list 只能获取 data 里面的值,不能获取到新的值,所以应该让渲染出来表格的数据跟着搜索框变化,使用 search 方法传入 keywords,就能获取到 data 中的任何数据。

之前,v-for 中的数据都是从 data 上的 list 中直接渲染过来的;现在,我们自定义了一个 search 方法,同时,把搜索的关键字,通过传参的形式,传递给了 search方法。

在 search 方法内部,通过执行 for 循环,把所有符合搜索关键字的数据,保存到一个新数组中,返回。

当它返回后,再进行 v-for 循环,就是符合条件的数据。那么就定义一个search(keywords) 方法,根据关键字进行数据的搜索,再循环 list 获取数据。

 

二、forEach+indexOf 方法过滤数据

forEach 结合 indexOf 查找所需要的条件;先循环 list,然后 item(循环的每一项),用 item 中的 name 与 keywords 进行比较,看 item.name 是否包含 keywords,如果包含,

就应该把 item 重新存起来,在外面定义一个 newList 空数组,用if语句判断是否包含关键字,用 indexOf 把 keywords传进来,再用!=-1来判断是否包含,

接着 push 一下 item,经过完整的 forEach 循环最后返回 newList,实现数据过滤功能。

空字符串也包含在其中。

var newList = []

this.list.forEach(item=>){

if(item.name.indexOf(keywords)) !=-1){

newList.push(item)

}

})

return newList


三、filter+includes 方法过滤数据

1.filter 方法

this.list.filter(item=>{}),item代表用filter循环的每一项。

注意:forEach,some,filter,findIndes这些都属于数组的新方法,都会对数组中的每一项,进行遍历,执行相关操作。

在操作或循环中有区别,forEach不能被终止;some可以通过return true进行终止;filter用来进行过滤,把查询到的,符合条件的,返回得到一个新数组;findIndex用来找到对象的索引。如果item.name还是包含keywords就进行return,返回一个新数组。ES6中,

为字符串提供了一个新方法,叫做String.prototype.includes('要包含的字符串')

如果包含,则返回true,否则返回false,最后直接return。

return this.list.filter(item=>{

if(item.name.include(keywords)){

return item

}

})

2.jQuery 中的 contains 方法

(1)定义和用法:

①:contains选择器选取包含指定字符串的元素。

②该字符串可以是直接包含在元素中的文本,或者被包含于子元素中。

举例讲解:

<p>123哈哈哈<p>

<p>娃哈哈<p>

<p>345<p>

想要选取出带哈的p标签,就可以使用$( ":contains()"),把所有内容里面包含哈的标签筛选出来,返回一个数组。

③经常与其他元素/选择器一起使用,来选择指定的组中包含指定文本的元素。 

(2)语法:

$( ":contains(text)")

完整代码,如下:

<!DOCTYPE html>

<html lang= "en">

<head>

<meta charset= "UTF-8">

<meta name="viewport" content="width=device-width,initi

al-scale=1.0">

< meta http-equiv="X-UA-Compatible" content="ie=edge">

<title>Document</title>

<script src="./lib/vue-2.4.0.js"></script>

<link rel= "stylesheet" href= "./lib/bootstrap-3.3.7.css">

</head>

<body>

<div id= "app">

<div class= "panel panel-primary">

<div class= "panel-heading">

<h3 class= "panel-title">添加品牌</h3>

</div><div class= "panel-body form-inline " >

<lable>

Id:

<input type= "text" class="form-control" v-model= "id">

</lable>

<lable>

Name:

<input type= "text" class="form-control" v-model= "name">

</lable>

<input type="button" value="添加" class="btn btn

-primary" @click= "add()">

</div>

</div>

<table class= "table table-bordered table-hover table-striped">

<thead>

<tr>

<th>Id</th>

<th>Name</th>

<th>Ctime</th>

<th>Operation</th>

</tr>

</thead>

<tbody>

<tr v-for="item in search(keywords)" : key="item.id">

<td>{{ item.id }}</td>

<td>{{ v-text=" item.name " }}</td>

<td>{{ item.ctime }}</td>

<td>

<a href="@click.prevent ="del(item.id)"">删除</a>

</td>

</tr>

</tbody>

</table>

</div>

<script>

var vm = new Vue({

el: '#app',

data: {

id: ' ',

name: ' ',

list: [

{ id: 1, name:  '奔驰', ctime: new Date() },

{ id: 2, name:  '宝马', ctime: new Date() }

]

},

methods: {

add(){

var car ={id: this.id, name:this.name, ctime:new Date()}

this.list.push(car)

}

del(id){

var index=this.list.findIndex(item=>){

if (item.id == id) {

return true;

}

})

this.list.splice(index, 1)

}

search(keywords){

return this.list.filter(item=>{

if(item.name.include(keywords)){

return item

}

})

</script>

</body>

</html>

相关文章
接口数据多条件搜索(模糊查询)
接口数据多条件搜索(模糊查询)
228 0
|
3月前
|
JSON API 开发者
苏宁关键字搜索接口详解
苏宁关键字搜索接口服务让开发者通过API输入关键字获取平台商品信息。支持价格区间、品牌等多种筛选,精确查找。需先注册开发者账号,创建应用获API密钥。调用时指定搜索词、分类、价格等参数,并使用个人API密钥。Python示例展示了请求及解析JSON响应的方法,包括商品名、价格等详情。注意替换密钥和个人调用频率限制。此接口对企业搜索、选品等业务至关重要。
|
5月前
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用问题之是否可以在筛选条件上增加筛选单行文本的内容
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
阿里云云效产品使用问题之是否可以在筛选条件上增加筛选单行文本的内容
|
4月前
|
存储 自然语言处理 算法
写篇天猫关键字搜索接口的技术贴
**天猫关键字搜索接口深入解析:** 本文探讨接口技术架构,包括前端展示、请求处理、搜索服务(含分词、权重计算、个性化推荐)及数据存储层的优化。使用分词算法、权重计算确保精准匹配,通过缓存、分布式部署和异步处理提升性能。应用场景覆盖商品、店铺、优惠券及智能问答搜索,强化用户体验和平台竞争力。
|
5月前
|
SQL 数据库 UED
条件筛选大作战:解析Where与Having的区别与应用
条件筛选大作战:解析Where与Having的区别与应用
43 0
|
6月前
|
XML JSON 缓存
temu跨境电商按关键字搜索temu商品 API 返回值说明
请求参数:q=shoe&start_price=&end_price=&page=&list_id=&cat=&discount_only=&sort=&page_size=&seller_info=&nick=&ppath=
|
数据采集 搜索推荐 安全
如何提升关键字展现?
答案是:选择竞争难度低且有一定流量的关键词。 提升关键字展现的策略 关键字展现是Google优化的一个重要组成部分。 通过提升关键字的展现,你可以在搜索引擎结果页(SERP)中获得更高的排名,从而吸引更多的潜在客户访问你的网站。 做好关键词研究 要提升关键字展现,首先需要对你的目标关键字进行深入的研究。 了解你的目标用户会搜索什么样的关键词,然后优化你的网站内容以包含这些关键词。 关键词研究不仅包括找出有哪些关键词,还包括了解这些关键词的搜索量、竞争程度等等。
110 0
如何提升关键字展现?
|
数据采集 PHP 数据格式
php清洗数据实战案例(3):关联数组键值筛选排除创建新的数组
php清洗数据实战案例(3):关联数组键值筛选排除创建新的数组
54 0
|
移动开发 JavaScript 算法
如何实现动态内容条件筛选
这两天看了一下后端给的接口文档,每一个都要求筛选,而且这个筛选还是多条件的,还是不能固定的,要求根据用户的输入然后筛选,我之前的实现大概是这样子,当用户想要筛选的时候就去检索条件,并输入相关的内容进行筛选