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

1、多重循環遍歷查找優化
開發中經常會遇到需要在一個數組中查找某一個對象的問題,單純用for循環語句循環查找。(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
優化後的代碼:

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;
            }
        }

    }
}

2、ionic4中彈出組件是需要異步操作的,但有時候需要在一個同步方法中,進行彈出,即同步方法如何有效包含異步操作
正常的異步操作:

async click(){
    const alert = await this.alertCtrl.create({
            header: '請輸入手機號!',
            buttons: ['確定']
        });
    await alert.present();
 }

將click方法同步後的代碼:

click(){
    this.alertCtrl.create({
            header: '請輸入手機號!',
            buttons: ['確定']
        }).then((alert) => {
            alert.present();
        });
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章