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

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

开发者学堂课程【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>

相关文章
|
3月前
|
JSON API 开发者
苏宁关键字搜索接口详解
苏宁关键字搜索接口服务让开发者通过API输入关键字获取平台商品信息。支持价格区间、品牌等多种筛选,精确查找。需先注册开发者账号,创建应用获API密钥。调用时指定搜索词、分类、价格等参数,并使用个人API密钥。Python示例展示了请求及解析JSON响应的方法,包括商品名、价格等详情。注意替换密钥和个人调用频率限制。此接口对企业搜索、选品等业务至关重要。
|
4月前
|
存储 自然语言处理 算法
写篇天猫关键字搜索接口的技术贴
**天猫关键字搜索接口深入解析:** 本文探讨接口技术架构,包括前端展示、请求处理、搜索服务(含分词、权重计算、个性化推荐)及数据存储层的优化。使用分词算法、权重计算确保精准匹配,通过缓存、分布式部署和异步处理提升性能。应用场景覆盖商品、店铺、优惠券及智能问答搜索,强化用户体验和平台竞争力。
|
5月前
|
SQL 数据库 UED
条件筛选大作战:解析Where与Having的区别与应用
条件筛选大作战:解析Where与Having的区别与应用
40 0
|
数据采集 搜索推荐 安全
如何提升关键字展现?
答案是:选择竞争难度低且有一定流量的关键词。 提升关键字展现的策略 关键字展现是Google优化的一个重要组成部分。 通过提升关键字的展现,你可以在搜索引擎结果页(SERP)中获得更高的排名,从而吸引更多的潜在客户访问你的网站。 做好关键词研究 要提升关键字展现,首先需要对你的目标关键字进行深入的研究。 了解你的目标用户会搜索什么样的关键词,然后优化你的网站内容以包含这些关键词。 关键词研究不仅包括找出有哪些关键词,还包括了解这些关键词的搜索量、竞争程度等等。
109 0
如何提升关键字展现?
|
关系型数据库 MySQL 程序员
漏刻有时操作数据php类记录及筛选条件的写法
漏刻有时操作数据php类记录及筛选条件的写法
59 1
|
数据挖掘
基于R筛选过滤低丰度物种的几种方式
基于R筛选过滤低丰度物种的几种方式
438 0
|
移动开发 JavaScript 算法
如何实现动态内容条件筛选
这两天看了一下后端给的接口文档,每一个都要求筛选,而且这个筛选还是多条件的,还是不能固定的,要求根据用户的输入然后筛选,我之前的实现大概是这样子,当用户想要筛选的时候就去检索条件,并输入相关的内容进行筛选
|
存储 SQL JSON
APIJSON - 功能符、数组关键词、对象关键词、全局关键词简表速查
APIJSON - 功能符、数组关键词、对象关键词、全局关键词简表速查
619 0
APIJSON - 功能符、数组关键词、对象关键词、全局关键词简表速查
|
Scala 开发者
匹配嵌套结构和商品打折需求 | 学习笔记
快速学习匹配嵌套结构和商品打折需求
【硬着头皮】 你在筛选List里面的数据么?
【硬着头皮】 你在筛选List里面的数据么?
【硬着头皮】 你在筛选List里面的数据么?