微信小程序setData復雜數組的更新、刪除、添加、拼接


眾所周知,微信小程序里所有對數據的修改只有在setData里修改才會在頁面上渲染。在此分享小程序里復雜數組的更新、刪除、添加、拼接

 

初始數據

數組嵌套對象

data: {
    cartList: [{ id: 1, goods: {id: 1, name: 'wechat'}, checked: true }, { id: 2, goods: {}, checked: false }, { id: 3, goods: {}, checked: true }]
 },

 

索引部分刪除

1 let index = 2;
2 let cartList = this.data.cartList
3 cartList.splice(index, 1)
4 this.setData({
5         cartList: cartList
6       })

 

內部部分修改

只修改數據內某項里的某屬性。但此方法對於有引用到被修改的數據的wxs不會刷新頁面顯示,尚未清楚是bug還是小程序本身就不支持。

let index = 2
let updateTodo = `cartList[${index}].checked`
this.setData({
          [updateTodo]:  true
        })

用一個變量接收要修改的數組,修改好后再整體setData賦值,如果原數據很大的話可能會影響性能。

1 let index = 2
2 let cartList = this.data.cartList;
3 cartList[index].checked = res.data.checked
4 this.setData({
5           cartList: cartList
6         })

 

添加、拼接

push和concat

 1 // push改變原數組
 2 let newList=  [{ id: 4, goods: {}, checked: true }, { id: 5, goods: {}, checked: false }}]
 3 let cartList = this.data.cartList;
 4 cartList.push(...newList);
 5 this.setData({
 6           cartList: cartList
 7         })
 8 
 9 // concat返回添加后的副本,並不會修改原有數組
10 let newList=  [{ id: 4, goods: {}, checked: true }, { id: 5, goods: {}, checked: false }}]
11 let cartList = this.data.cartList;
12 this.setData({
13           cartList: cartList.concat(newList)
14         })


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM