在顺利完成某一功能模块后,如何进步工作效率、如何时代吗更加简洁、优雅,便是咱们接下来要思考的问题。上面总结了一些开发过程中常常用到的一些技巧,供大家一起学习。

一、求和,最小值和最大值

const array = [5,4,7,8,9,2];array.reduce((a,b) => a+b); // 求和array.reduce((a,b) => a>b?a:b); // 最大值array.reduce((a,b) => a<b?a:b); // 最小值

二、从数组中过滤掉“假”值

次要用于过滤掉像0, undefined, null, false, "", ''这些“假”值

const array = [3, 0, 6, 7, '', false];array.filter(Boolean);

三、实用对象或Map实现计数器

比如说当初要计算一个关键词呈现的频率

let string = 'kapilalipak';const table={}; for(let char of string) {  table[char]=table[char]+1 || 1;}// 输入table{k: 2, a: 3, p: 2, i: 2, l: 2}

或者

const countMap = new Map();  for (let i = 0; i < string.length; i++) {    if (countMap.has(string[i])) {      countMap.set(string[i], countMap.get(string[i]) + 1);    } else {      countMap.set(string[i], 1);    }  }// 输入Map(5) {"k" => 2, "a" => 3, "p" => 2, "i" => 2, "l" => 2}

四、随机排列一个数组中元素的地位

const list = [1, 2, 3, 4, 5, 6, 7, 8, 9];list.sort(() => {    return Math.random() - 0.5;});

五、双问号语法

概念是 当右边的值为 null 或者 undefined 时,就返回左边的值

const foo = null ?? 'my school';// 输入: "my school"const baz = 0 ?? 42;// 输入: 0

六、可选链

代码review时刚学到的,十分实用。

const adventurer = {  name: 'Alice',  cat: {    name: 'Dinah'  }};// 失常状况下咱们可能这样写const dogName = adventurer.dog ? adventurer.dog.name : '';// 而应用可选链后咱们能够这样写const dogName = adventurer.dog?.name;console.log(dogName);// expected output: undefinedconsole.log(adventurer.someNonExistentMethod?.());// expected output: undefined