一、多重循環遍歷查找優化
開發中常常會遇到須要在一個數組中查找某一個對象的問題,單純用for循環語句循環查找。(typescript)
以前寫的是這樣的typescript
inManual(search, manual) { for (let i = 0; i < search.length; i++) { for (let j = 0; j < manual.users.length; j++) { for (let k = 0; k < manual.users[j].contacts.length; k++) { if (search[i].phone == manual.users[j].contacts[k].phone) { search[i].state = 1; } } } } return search; }
不管有沒有找到,這樣作都須要所有循環一遍性能太浪費,須要用break來及時跳出這次循環。然而須要跳出多重循環,也就能夠改變下用return
優化後的代碼:json
for (let i = 0; i < search.length; i++) { this.isAdd(i); } isAdd(i) { for (let j = 0; j < manual.users.length; j++) { for (let k = 0; k < manual.users[j].contacts.length; k++) { if (search[i].phone == manual.users[j].contacts[k].phone) { search[i].state = 1; return; } } } }
二、ionic4中彈出組件是須要異步操做的,但有時候須要在一個同步方法中,進行彈出,即同步方法如何有效包含異步操做
正常的異步操做:segmentfault
async click(){ const alert = await this.alertCtrl.create({ header: '請輸入手機號!', buttons: ['肯定'] }); await alert.present(); }
將click方法同步後的代碼:數組
click(){ this.alertCtrl.create({ header: '請輸入手機號!', buttons: ['肯定'] }).then((alert) => { alert.present(); }); }
三、js對象轉換成JSON對象,使用stringfy()方法進行轉換,但在轉換過程當中須要注意,會自動把js對象的屬性值爲undefined的屬性去掉。
一篇寫得很好的對json對象進行講解的文章https://segmentfault.com/a/11...
四、函數是js的一等公民,即最小做用域是函數。js沒有私有成員的概念,全部對象屬性都是公有的,但有私有變量。方法:
(1)利用構造函數,訪問私有做用域中的變量。
(2)利用靜態屬性(掛載在原型上的屬性)訪問做用域中的變量。異步