1. 程式人生 > >記錄一些日常的小問題(前端)

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

1、多重迴圈遍歷查詢優化
開發中經常會遇到需要在一個數組中查詢某一個物件的問題,單純用for迴圈語句迴圈查詢。(typescript)
之前寫的是這樣的

 inManual(search, manual) {
    console.log('1', search);
    console.log('2', 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;
            }
        }

    }
}