記錄一些平常的小問題(前端)

一、多重循環遍歷查找優化
開發中常常會遇到須要在一個數組中查找某一個對象的問題,單純用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)利用靜態屬性(掛載在原型上的屬性)訪問做用域中的變量。異步

相關文章
相關標籤/搜索