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