記錄一些日常的小問題(前端)
阿新 • • 發佈:2019-02-18
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; } } } }