前言:
Vue的核心是数据与视图的双向绑定,当我名修改数组时,vue会检测到数据变化,所以用v-for渲染的视图也会立即更新。
Vue包含了一组观察数组变异的方法,使用它们改变数组也会触发视图更新:
push()、pop()、shift()、unshift()、splice()、sort()、reverse()——》会改变原始数组
filter()、concat()、slice()——》不会改变原始数组
示例:
<div id="app"> <ul> <template v-for="(item,idx) in books"> <li>书名:{{item.name}}</li> <li>作者:{{item.autor}}</li> </template> </ul> </div> <script type="text/javascript"> var app = new Vue({ el: ‘#app‘, data: { books:[ { name:‘《Vue.js实战》‘, autor:‘粱澈‘ }, { name:‘《 JavaScript 言精粹》‘, autor:‘Douglas Crockford‘ }, { name:‘《 JavaScript 高级程序设计》‘, autor:‘Nicholas C.Zakas‘ } ] } }) app.books=app.books.filter(function(item){ return item.name.match(/JavaScript/); //match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。 }) </script>
渲染的结果中,第一项会被过滤掉
过滤与排序
当你不想改变原数组,想通过一个数组的副本来做过滤或排序显示时,可以使用计算属性来返回过滤或排序后的数组
<div id="app"> <ul> <template v-for="(item,idx) in sortBooks"> <li>书名:{{item.name}}</li> <li>作者:{{item.autor}}</li> </template> </ul> </div> <script type="text/javascript"> var app = new Vue({ el: ‘#app‘, data: { books:[ { name:‘《Vue.js实战》‘, autor:‘粱澈‘ }, { name:‘《 JavaScript 言精粹》‘, autor:‘Douglas Crockford‘ }, { name:‘《 JavaScript 高级程序设计》‘, autor:‘Nicholas C.Zakas‘ } ] }, computed:{ filterBooks:function(){ //过滤掉书名不含JavaScript return this.books.filter(item => item.name.match(/JavaScript/)) }, sortBooks:function(){//根据书名的长度排序 return this.books.sort((a,b)=> a.name.length<b.name.length) } } }) </script>
原文:https://www.cnblogs.com/HeLingping/p/14546976.html