基础显示

data钩子中定义好数据数组,并使用v-for在li标签中进行展示,并给每一个li标签绑定自己的key(借助第三方库shortid生成独一无二的id)

<template><div><h3>搜索列表</h3><label><input type="text" placeholder="请输入要搜索的姓名" v-model="searchName"></label><ul><li v-for="(person,index) in persons" :key="personsKeys[index]">{{index+1}})姓名:{{person.name}} —— 性别:{{person.sex}} —— 年龄:{{person.age}} —— 电话:{{person.phone}}</li></ul></div>
</template><script>
import shortid from 'shortid'
export default {name: "ListRenderTwo",data() {return {searchName:'',persons: [{name: '张三', sex: '女', age: 19, phone: '12344552121'},{name: '李四', sex: '男', age: 29, phone: '12344952162'},{name: '王五', sex: '男', age: 39, phone: '12344852193'},{name: '赵六', sex: '女', age: 49, phone: '12344562184'},{name: '保国', sex: '女', age: 39, phone: '12344552175'},{name: '张三', sex: '男', age: 29, phone: '12344252166'},{name: '李四', sex: '女', age: 49, phone: '12344572157'},{name: '王五', sex: '男', age: 19, phone: '12344652118'},{name: '赵六', sex: '女', age: 39, phone: '12344552129'},{name: '保国', sex: '男', age: 69, phone: '12344552136'},{name: '张三', sex: '女', age: 59, phone: '12344552167'},{name: '李四', sex: '女', age: 39, phone: '12344552188'},{name: '王五', sex: '女', age: 59, phone: '12344552159'},{name: '赵六', sex: '男', age: 49, phone: '12344552191'},{name: '保国', sex: '男', age: 19, phone: '12344552172'},{name: '张三', sex: '女', age: 29, phone: '12344552156'},{name: '李四', sex: '女', age: 39, phone: '12344552134'},{name: '王五', sex: '女', age: 19, phone: '12344552125'},],personsKeys:[]}},mounted() {this.personsKeys = this.persons.map(v=>shortid.generate())}
}
</script><style scoped>
ul,li{list-style: none;
}
li{margin: 5px;
}
</style>

运行结果:

过滤

思路:输入关键字后,通过计算属性得到新的数组进行展示。新的数组初始情况下是等于所有人数组的,输入姓名后,会进行过滤,然后进行展示。
关键代码

computed: {filterPersons() {// 获取数据let {searchName, persons} = this;// 取出数组中的数据let arr = [...persons];// 过滤数组if (searchName.trim()) {arr = persons.filter(p => p.name.indexOf(searchName) !== -1);}return arr;}}

完整代码

<template><div><h3>搜索列表</h3><label><input type="text" placeholder="请输入要搜索的姓名" v-model="searchName"></label><ul><li v-for="(person,index) in filterPersons" :key="personsKeys[index]">{{ index + 1 }})姓名:{{ person.name }} —— 性别:{{ person.sex }} —— 年龄:{{ person.age }} —— 电话:{{ person.phone }}</li></ul></div>
</template><script>
import shortid from 'shortid'export default {name: "ListRenderTwo",data() {return {searchName: '',persons: [{name: '张三', sex: '女', age: 19, phone: '12344552121'},{name: '李四', sex: '男', age: 29, phone: '12344952162'},{name: '王五', sex: '男', age: 39, phone: '12344852193'},{name: '赵六', sex: '女', age: 49, phone: '12344562184'},{name: '保国', sex: '女', age: 39, phone: '12344552175'},{name: '张三', sex: '男', age: 29, phone: '12344252166'},{name: '李四', sex: '女', age: 49, phone: '12344572157'},{name: '王五', sex: '男', age: 19, phone: '12344652118'},{name: '赵六', sex: '女', age: 39, phone: '12344552129'},{name: '保国', sex: '男', age: 69, phone: '12344552136'},{name: '张三', sex: '女', age: 59, phone: '12344552167'},{name: '李四', sex: '女', age: 39, phone: '12344552188'},{name: '王五', sex: '女', age: 59, phone: '12344552159'},{name: '赵六', sex: '男', age: 49, phone: '12344552191'},{name: '保国', sex: '男', age: 19, phone: '12344552172'},{name: '张三', sex: '女', age: 29, phone: '12344552156'},{name: '李四', sex: '女', age: 39, phone: '12344552134'},{name: '王五', sex: '女', age: 19, phone: '12344552125'},],personsKeys: []}},mounted() {this.personsKeys = this.persons.map(v => shortid.generate())},computed: {filterPersons() {// 获取数据let {searchName, persons} = this;// 取出数组中的数据let arr = [...persons];// 过滤数组if (searchName.trim()) {arr = persons.filter(p => p.name.indexOf(searchName) !== -1);}return arr;}}
}
</script><style scoped>
ul, li {list-style: none;
}li {margin: 5px;
}
</style>

排序

思路:使用一个参数记录排序方式,根据排序方式对显示的人员数组进行排序。
关键代码

computed: {filterPersons() {// 获取数据let {searchName, persons, orderType} = this;// 取出数组中的数据let arr = [...persons];// 过滤数组if (searchName.trim()) {arr = persons.filter(p => p.name.indexOf(searchName) !== -1);}// 排序if (orderType) {arr.sort((p1, p2) => {if (orderType === 1) {//  降序return p2.age-p1.age;} else if (orderType === 2) {// 升序return p1.age-p2.age;} else {}})}return arr;}
},
methods: {orderByAge(orderType) {this.orderType = orderType;}
}

完整代码

<template><div><h3>搜索列表</h3><div><h3>排序</h3><button @click="orderByAge(0)">默认</button><button @click="orderByAge(2)">年龄↑</button><button @click="orderByAge(1)">年龄↓</button></div><p>----------------------------------------------------------------------------------</p><label><input type="text" placeholder="请输入要搜索的姓名" v-model="searchName"></label><ul><li v-for="(person,index) in filterPersons" :key="personsKeys[index]">{{ index + 1 }})姓名:{{ person.name }} —— 性别:{{ person.sex }} —— 年龄:{{ person.age }} —— 电话:{{ person.phone }}</li></ul></div>
</template><script>
import shortid from 'shortid'export default {name: "ListRenderTwo",data() {return {searchName: '',persons: [{name: '张三', sex: '女', age: 19, phone: '12344552121'},{name: '李四', sex: '男', age: 29, phone: '12344952162'},{name: '王五', sex: '男', age: 39, phone: '12344852193'},{name: '赵六', sex: '女', age: 49, phone: '12344562184'},{name: '保国', sex: '女', age: 39, phone: '12344552175'},{name: '张三', sex: '男', age: 29, phone: '12344252166'},{name: '李四', sex: '女', age: 49, phone: '12344572157'},{name: '王五', sex: '男', age: 19, phone: '12344652118'},{name: '赵六', sex: '女', age: 39, phone: '12344552129'},{name: '保国', sex: '男', age: 69, phone: '12344552136'},{name: '张三', sex: '女', age: 59, phone: '12344552167'},{name: '李四', sex: '女', age: 39, phone: '12344552188'},{name: '王五', sex: '女', age: 59, phone: '12344552159'},{name: '赵六', sex: '男', age: 49, phone: '12344552191'},{name: '保国', sex: '男', age: 19, phone: '12344552172'},{name: '张三', sex: '女', age: 29, phone: '12344552156'},{name: '李四', sex: '女', age: 39, phone: '12344552134'},{name: '王五', sex: '女', age: 19, phone: '12344552125'},],personsKeys: [],orderType: 0}},mounted() {this.personsKeys = this.persons.map(v => shortid.generate())},computed: {filterPersons() {// 获取数据let {searchName, persons, orderType} = this;// 取出数组中的数据let arr = [...persons];// 过滤数组if (searchName.trim()) {arr = persons.filter(p => p.name.indexOf(searchName) !== -1);}// 排序if (orderType) {arr.sort((p1, p2) => {if (orderType === 1) {//  降序return p2.age - p1.age;} else if (orderType === 2) {// 升序return p1.age - p2.age;}})}return arr;}},methods: {orderByAge(orderType) {this.orderType = orderType;}}
}
</script><style scoped>
ul, li {list-style: none;
}li {margin: 5px;
}button {margin-left: 20px;
}
</style>

Vue:数组的过滤排序显示客户端实现相关推荐

  1. Vue 数组更新与排序过滤

    前面的话 Vue 的核心是数据与视图的双向绑定,当我们修改数组时,Vue会检测到数据变化,所以用v-for 渲染的视图也会立即更新.Vue为了增加列表渲染的功能,增加了一组观察数组的方法,而且可以显示 ...

  2. vue 数组按时间排序

    <template><div><el-button @click="sort()">时间排序</el-button></div ...

  3. Vue数组更新及过滤排序功能

    Vue为了增加列表渲染的功能,增加了一组观察数组的方法,而且可以显示一个数组的过滤或排序的副本.本文将详细介绍Vue数组更新及过滤排序 前面的话 Vue为了增加列表渲染的功能,增加了一组观察数组的方法 ...

  4. php 从大到小显示,vue.js,javascript_Vue 在列表渲染的时候,能排序显示么。 比如按价格从大到小排序,vue.js,javascript - phpStudy...

    Vue 在列表渲染的时候,能排序显示么. 比如按价格从大到小排序 // json { "data": [ { "name": "山鹰登山社" ...

  5. vue 敏感词过滤 前端

    vue 敏感词过滤 前端 根据正则来进行过滤 敏感词是一个数组 词比较多 专门存放在js文件里面 vue用 export 导出 再引入到需要用的组件里 judgeBadWord(obj) {let w ...

  6. 【Vue.JS】Vue.JS 表格内容排序组件,Render函数的使用

    声明:文中代码整体思路来源于 梁灏 编著的 [Vue.JS 实战]一书,学习过程中因觉得该组件效果不错,比较实用,所以记录一份并做了详细的注释以供学习 效果图 代码 index.html <!D ...

  7. 基于vue 通过数据过滤 实现表格合并

    基于vue 通过数据过滤 实现表格合并 需求 基于vue渲染的数据表格 需要对相同的列进行合并 思路 自从使用了vue,就再也不想直接操作dom节点了,所以还是对数据操作. 要合并单元格需要用到row ...

  8. 【Demo】IOS中将对象数组按照时间戳排序

    将对象按照时间戳排序,这里典型的一个例子是登录账户的排序:本地客户端可能保存了多个账户信息,在登录窗口用户可以选择已经登陆过的账户直接登录,现在的需求是要时刻让最近登陆过的账户排在前面,对于每个账户, ...

  9. vue 数组元素替换_11. VUE 数组操作

    变异方法 Vue 包含一组观察数组的变异方法,所以它们也将会触发视图更新.这些方法如下: push() 添加元素 {{ item.message }} varexample1= newVue({ el ...

  10. c# 逆转数组元素的排序

    c#中逆转数组元素的排序实例代码如下: private string[] G_str_array;//定义字符串数组字段 private void Frm_Main_Load(object sende ...

最新文章

  1. VS2013\VS2017 使用git 总是需要输入账号密码
  2. H5学习系列之Communication API
  3. jmeter csv参数化_jmeter学习(二)
  4. wince 修改dns_如何修改wince的网络配置
  5. 蓝桥杯 1454 蚂蚁感冒 (找规律)
  6. 《C++入门经典(第6版)》——1.3 创建您的第一个程序
  7. 数据聚集技术在mondrian中的实现
  8. 通过@Value + @PropertySource来给组件赋值
  9. 蛮力法在求解凸包问题中的应用(JAVA)
  10. 福昕高级PDF编辑器
  11. R语言分类算法之线性判别分析(Linear Discriminant Analysis)
  12. python 下载文件-Python实现HTTP协议下的文件下载方法总结
  13. NLP(三) 预处理
  14. 【题解】Luogu P3871 [TJOI2010]中位数
  15. nike tiempo ylak raoh fmtp
  16. Python3之pip加速
  17. 软件收集-建筑工程资料软件
  18. 小白入门必看 ‘微信小程序地图定位开发教程‘
  19. Java方法:方法解释,方法的定义及调用
  20. 2.4G模块及SPI通讯

热门文章

  1. 21.go tool pprof
  2. 17.go 面向对象 interface
  3. 53. Using a Custom Admin URL
  4. 47. Element isSameNode() 方法
  5. 19. JavaScript RegExp 对象
  6. 20. Feature分支
  7. Android中设置显示文本,TextView控件的使用(Android设置文本显示格式)
  8. 变频器22b系列说明书_变频器接电位器正确接法
  9. 小白初学Vue之 组件与实例的关系 初试篇
  10. Atitit 发帖机系列(8)  词法分析器v5 版本新特性说明)