一、多重循环遍历查找优化
开发中常常会遇到须要在一个数组中查找某一个对象的问题,单纯用for循环语句循环查找。(typescript)
以前写的是这样的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
优化后的代码:json
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; } } } }
二、ionic4中弹出组件是须要异步操做的,但有时候须要在一个同步方法中,进行弹出,即同步方法如何有效包含异步操做
正常的异步操做:segmentfault
async click(){ const alert = await this.alertCtrl.create({ header: '请输入手机号!', buttons: ['肯定'] }); await alert.present(); }
将click方法同步后的代码:数组
click(){ this.alertCtrl.create({ header: '请输入手机号!', buttons: ['肯定'] }).then((alert) => { alert.present(); }); }
三、js对象转换成JSON对象,使用stringfy()方法进行转换,但在转换过程当中须要注意,会自动把js对象的属性值为undefined的属性去掉。
一篇写得很好的对json对象进行讲解的文章https://segmentfault.com/a/11...
四、函数是js的一等公民,即最小做用域是函数。js没有私有成员的概念,全部对象属性都是公有的,但有私有变量。方法:
(1)利用构造函数,访问私有做用域中的变量。
(2)利用静态属性(挂载在原型上的属性)访问做用域中的变量。异步