相信在小程式推出公測之後,許多小夥伴都已經抓緊申請註冊小程式了。在開發階段中也碰到了很多的問題,例如wx.request數據請求不成功,在數組操作時,不知道如何往數組裡push數據,input如何監聽用戶輸入的狀態,css的background-image無法獲取本地資源等等,本部落格會出一個專題,給碰到這些問題的朋友們解決想法。
今天我們主要講的是,陣列運算。
相信對於用過vuejs、reactjs等mvvm框架的童鞋,微信小程式的陣列運算就顯得很簡單啦,原理是一樣的。
這是簡單做的一個demo,已經上傳到 github,到時大夥可以直接下載。我們主要講在數組中常用的一些操作方法,對數組向前向後插入新的資料、修改數組、刪除數組、清空數組,其他的一些操作方式,我會給大夥學習思路。
demo陣列操作的範例路徑:/pages/<a href="http://www.php.cn/wiki/1041.html" target="_blank">array</a>/array.w<a href="http://www.php.cn/wiki/1527.html" target="_blank">xml</a>
Page({ data: { list:[{ id:1, name:'应季鲜果', count:1 },{ id:2, name:'精致糕点', count:6 },{ id:3, name:'全球美食烘培原料', count:12 },{ id:4, name:'无辣不欢生猛海鲜', count:5 }] } })
JavaScript<a href="http://www.php.cn/wiki/48.html" target="_blank"> concat()</a>的方法,
concat() 方法用於連接兩個或多個數組,該方法不會改變現有的數組。
其實我們的所說的向前向後
插入資料,其實也就是把兩個數組合拼起來,組成一個新的數組,然後再使用this. set<a href="http://www.php.cn/code/8209.html" target="_blank">Data()</a>即可渲染到頁面上。
我們來看看在微信小程式裡的程式碼。
向前插入資料demo
//向前增加数据 add_before:function (){ //要增加的数组 var newarray = [{ id:6, name:'向前增加数据--'+new Date().getTime() , count:89 }]; //使用concat()来把两个数组合拼起来 this.data.list = newarray.concat(this.data.list); //将合拼之后的数据,发送到视图层,即渲染页面 //大伙请记录,修改了数据后,一定要再次执行`this.setData()`,页面才会渲染数据的。 this.setData({ 'list': this.data.list }); }
向後插入資料demo
//向后增加数据 add_after:function (){ //要增加的数组 var newarray = [{ id:5, name:'向后增加数据--'+new Date().getTime() , count:89 }]; this.setData({ 'list':this.data.list.concat(newarray) }); },細心的小夥伴應該會發現,這兩段在用
concat()合拼資料時,concat括號裡的資料是不一樣的。向前向後插入資料的差異就在這裡了。
//假设这一段是我们要新增的数组 var newarray = [{ id:5, name:'向后增加数据--'+new Date().getTime() , count:89 }]; //向前--用newarray与this.data.list合拼 this.data.list = newarray.concat(this.data.list); //向后--用this.data.list与newarray合拼 this.data.list = this.data.list.concat(newarray);修改陣列對展示的資料進行修改,在開發過程中常見得不在常見的事情啦。
//修改数组 edit:function (e){ //这个参数“e”的具体作用,请参考微信小程序官方提供的说明,地址为https://mp.weixin.qq.com/debug/wxadoc/dev/framework/view/wxml/event.html?t=20161107 var dataset = e.target.dataset; var Index = dataset.index; //在通过在wxml页面里使用 data-index="{{index}}"传递过来的,是为识别正在编辑修改哪个数组。 //我们要修改的数组 this.data.list[Index].name = '修改了内容'+new Date().getTime(); //将合拼之后的数据,发送到视图层,即渲染页面 //大伙请记录,修改了数据后,一定要再次执行`this.setData()`,页面才会渲染数据的。 this.setData({ list:this.data.list }); }刪除某條資料有增有改也必有刪除。
刪除需要用到
JavaScript splice()方式,
splice() 方法向/從陣列中新增/刪除項目,然後傳回被刪除的項目。
//删除 remove:function (e){ var dataset = e.target.dataset; var Index = dataset.index; //通过`index`识别要删除第几条数据,第二个数据为要删除的项目数量,通常为1 this.data.list.splice(Index,1); //渲染数据 this.setData({ list:this.data.list }); }清空資料增修刪之後,還要再來一個清空資料呀。
//清空 clear:function (){ //其实就是让数组变成一个空数组即可 this.setData({ list:{} }); }總結今天我們主要講了增修刪清空,其實對陣列的操作還有很多方式的,可以看以下截圖。
以上是微信小程式學習數組操作的詳細內容。更多資訊請關注PHP中文網其他相關文章!