码迷,mamicode.com
首页 > 其他好文 > 详细

记录一些日常的小问题(前端)

时间:2020-04-20 13:21:31      阅读:62      评论:0      收藏:0      [点我收藏+]

标签:遍历   rtc   sync   types   isa   ctr   对象   循环语句   sadd   

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

记录一些日常的小问题(前端)

标签:遍历   rtc   sync   types   isa   ctr   对象   循环语句   sadd   

原文地址:https://www.cnblogs.com/homehtml/p/12737122.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!