国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

不得不知的ES6小技巧

2024-05-06 15:32:21
字體:
來源:轉載
供稿:網友

如果你還知道其他一些小技巧,歡迎留言~ 很高興把它們補充進來。

1. 強制要求參數

ES6提供了默認參數值機制,允許你為參數設置默認值,防止在函數被調用時沒有傳入這些參數。

在下面的例子中,我們寫了一個required()函數作為參數a和b的默認值。這意味著如果a或b其中有一個參數沒有在調用時傳值,會默認required()函數,然后拋出錯誤。

const required = () => {throw new Error('Missing parameter')};const add = (a = required(), b = required()) => a + b;add(1, 2) //3add(1) // Error: Missing parameter.

2. 強大的reduce

數組的reduce方法用途很廣。它一般被用來把數組中每一項規約到單個值。但是你可以利用它做更多的事。

2.1 使用reduce同時實現map和filter

假設現在有一個數列,你希望更新它的每一項(map的功能)然后篩選出一部分(filter的功能)。如果是先使用map然后filter的話,你需要遍歷這個數組兩次。

在下面的代碼中,我們將數列中的值翻倍,然后挑選出那些大于50的數。有注意到我們是如何非常高效地使用reduce來同時完成map和filter方法的嗎?

const numbers = [10, 20, 30, 40];const doubledOver50 = numbers.reduce((finalList, num) => {  num = num * 2;   if (num > 50) {  finalList.push(num); }  return finalList;}, []);doubledOver50; // [60, 80]

2.2 使用reduce取代map和filter

如果你認真閱讀了上面的代碼,你應該能理解reduce是可以取代map和filter的。

2.3 使用reduce匹配圓括號

reduce的另外一個用途是能夠匹配給定字符串中的圓括號。對于一個含有圓括號的字符串,我們需要知道(和)的數量是否一致,并且(是否出現在)之前。

下面的代碼中我們使用reduce可以輕松地解決這個問題。我們只需要先聲明一個counter變量,初值為0。在遇到(時counter加一,遇到)時counter減一。如果左右括號數目匹配,那最終結果為0。

//Returns 0 if balanced.const isParensBalanced = (str) => { return str.split('').reduce((counter, char) => {  if(counter < 0) { //matched ")" before "("   return counter;  } else if(char === '(') {   return ++counter;  } else if(char === ')') {    return --counter;  } else { //matched some other char   return counter;  }   }, 0); //<-- starting value of the counter}isParensBalanced('(())') // 0 <-- balancedisParensBalanced('(asdfds)') //0 <-- balancedisParensBalanced('(()') // 1 <-- not balancedisParensBalanced(')(') // -1 <-- not balanced

2.4 統計數組中相同項的個數

很多時候,你希望統計數組中重復出現項的個數然后用一個對象表示。那么你可以使用reduce方法處理這個數組。

下面的代碼將統計每一種車的數目然后把總數用一個對象表示。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 正宁县| 徐州市| 安丘市| 安龙县| 海伦市| 自贡市| 班戈县| 雅安市| 武邑县| 康平县| 太湖县| 宜州市| 上林县| 菏泽市| 温宿县| 静宁县| 会理县| 周口市| 克东县| 伊宁县| 宜春市| 黔南| 上虞市| 十堰市| 峨眉山市| 迭部县| 山阴县| 绥化市| 新郑市| 兰考县| 大城县| 门头沟区| 新平| 芦山县| 丹东市| 临澧县| 静乐县| 庆元县| 驻马店市| 宁津县| 罗田县|