本次打卡值得关注的内容有,算法题为删除排序链表中的重复元素,Review 主要内容为 I didn't know that,本周 Tips 内容为 angular 中组件状态逻辑复用方案的一些思考和 ngFor 优化,分享的内容为 Ant Design Pro 简单使用总结。
Algorithm
本周继续完成 easy part,名为 remove duplicates from sorted list,删除排序列表中的重复元素,解该题开始并没有主要到是已经排序链表,因此给出的解法,性能上会有所损耗,不过结果还算好,击败了 84.36 % 用户,针对优化的方案,以后给吧!!!
var deleteDuplicates = function(head) {
var res = new ListNode();
if(!head) {
return res.next;
}
var object = Object.create(null);
var currentElement = res;
while(head.next) {
var val = head.val;
if(!object[val]) {
object[val] = true;
currentElement.next = new ListNode(val);
currentElement = currentElement.next;
}
// 移动到下一个元素
head = head.next;
}
// 处理最后值
if(!object[head.val]) {
currentElement.next = new ListNode(head.val);
}
return res.next;
};
function ListNode(val) {
this.val = val;
this.next = null;
}
Review
本周阅读的文章来自 youtube 一个视频 I did't know that,作者的个人博客地址 博客地址,本次分析大概内容有
- JSON.stringify 的多参数和 toJSON 属性
- 字符串函数 localeCompare 函数
- 字符串函数 normalize 函数
- Array.from 支持第二个回调函数,可以实现 map 功能
- 原生 Global 提供的 isNaN 函数,会将 NaN 判断为 true,并且 isNaN !== Number.isNaN
- 数组的 indexOf 无法判断是否存在 NaN,可以使用 includes 避免这个问题
- 不要使用函数的 length 属性来判断参数个数,因为对于 ES6 提供的默认参数和剩余参数无法生效
- finally 和 return 执行
Tip
最近在使用 angular 的过程中,存在一部分组件状态逻辑需要被其他组件复用,考虑到使用组件继承的方式,但是发现一个问题,就是如果父组件使用了某个生命周期钩子,子组件同样需要该声明周期时,此时父组件的生命周期钩子便不会触发,不禁开始思考,组件继承貌似并不是 angular 中复用逻辑的正确打开方式,一顿查阅之后,却没有发现更加何时的方式,在这里 marker 一下,非常值得思考。
还有就是 ngFor 的问题,angular 并不同于组件 Vue 或 React 强制要求在列表渲染时,添加 key 属性,最近在使用 ngFor 循环出组件时候,发现每次父组件重新渲染会导致子组件销毁再新建,这显然不是我需要的,幸运的是,angular 为 ngFor 提供了渲染优化,那就是 trackBy
接受一个函数引用,函数入参为循环对象和 index
,在函数中返回一个唯一的值作为 key 即可。
Share
本周分享为 Ant Design Pro 简单使用总结