写点什么

ARST- 日常打卡

用户头像
pjw
关注
发布于: 2021 年 03 月 14 日
ARST-日常打卡

Algorithm 每周至少一道算法题:力扣 141.环形链表

链接

/** * Definition for singly-linked list. * function ListNode(val) { *     this.val = val; *     this.next = null; * } */
/**
 * @param {ListNode} head
 * @return {boolean}
 */
var hasCycle = fucntion(head){
if( !head ) { return false; }
// 定义快慢指针
var f = head;
var s = head;
while(s && f && f.next){
f = f.next.next; // 快指针走两步 s = s.next; // 漫指针走一步 // 如果快慢指针相遇了, 说明有环存在 if(f === s){ return true; } }
// 跳出循环后就说明指针遍历到最后指向了 null 的位置return false;}
复制代码

Review 阅读并点评至少一篇英文技术文章: 文件系统

What Is a File System ? Types of Computer File Systems and How they Work – Explained with Examples

这篇介绍了计算机的文件系统,为什么需要文件系统,具体的实现方式有哪些,应用的场景有哪些,具体的文件如何管理等在文中都有详细介绍,可以说让我对计算机如何产生并管理文件有了更进一步的了解。

Tip 学习至少一个技术技巧: Array.prototype.reduce

数组中的 reduce 方法可以处理数组并返回一个可以是任何类型的值。

const newValue = arr.reduce(function (accumulator, currentValue, index, array) {  // Do stuff with accumulator and currentValue (index, array, and initialValue are optional)}, initialValue);
复制代码

accumulator: 上一个遍历返回的值

currentValue: 数组中当前遍历的元素

index: 当前元素位置的索引

array: 调用 reduce 方法的原始 arr 数组

initialValue: 执行 reduce 前的一个初始值,可以是对象,数字,字符串,数组


使用场景

// (1)根据年龄生成新的对象let people = [  { name: 'Alice', age: 21 },  { name: 'Max', age: 20 },  { name: 'Jane', age: 20 }];
function groupBy(arr, key) { return arr.reduce(function (acc, obj) { let prop = obj[key] if (!acc[prop]) { acc[prop] = [] } acc[prop].push(obj) return acc }, {})}
let groupedPeople = groupBy(people, 'age')// groupedPeople is:// {// 20: [// { name: 'Max', age: 20 },// { name: 'Jane', age: 20 }// ],// 21: [{ name: 'Alice', age: 21 }]// }
// (2)管道函数const double = x => x + x;const triple = x => 3 * x;
// 使用 es5 的方式包装高阶函数// function pipe(...functions) {// console.log(functions); // [f(x => x + x), f(x => 3 * x)]// return function (input) { // 出入的 1// return functions.reduce(function (acc, fn) {// return fn(acc)// }, input)// }// }
// 通过 es6 的语法精简后:const pipe = (...functions) => input => functions.reduce((acc, fn) => fn(acc), input);const multiply6 = pipe(double, triple);
console.log(multiply6(1)); // 2*3 6
复制代码

Share 分享一篇观点和思考的技术文章: 什么是 WebRTC

什么是 WebRTC

}

用户头像

pjw

关注

还未添加个人签名 2018.04.24 加入

还未添加个人简介

评论

发布
暂无评论
ARST-日常打卡