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

首頁 > 語言 > JavaScript > 正文

你點的 ES6一些小技巧,請查收

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

ES6出來已經有好幾年了,同時很多新特性可以被巧妙地運用在項目中。我想要列下其中一些,希望它們對你有用。

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

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方法處理這個數組。

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

圖片精選

主站蜘蛛池模板: 延庆县| 桃园市| 建水县| 扶余县| 施甸县| 宜川县| 阳江市| 温州市| 应城市| 景宁| 临安市| 芦溪县| 温州市| 兴宁市| 寻乌县| 邹城市| 沈丘县| 连平县| 修水县| 江都市| 新安县| 黄石市| 思南县| 屯留县| 新津县| 武冈市| 界首市| 昌黎县| 凤凰县| 乌兰察布市| 扬州市| 县级市| 监利县| 金坛市| 正镶白旗| 永昌县| 嘉定区| 巢湖市| 任丘市| 河间市| 白朗县|