1. 反轉字符串
使用擴展符號...
將字符串解析成數(shù)組莱革。
const reverseString = string => [...string].reverse().join('');
reverseString('Medium'); // 'muideM'
2. 數(shù)階乘
計算數(shù)據(jù)的階乘果录,使用箭頭函數(shù)和三元運算符买优。
const factorialOfNumber = number =>
number < 0
? (() => {
throw new TypeError('No negative numbers please');
})()
: number <= 1
? 1
: number * factorialOfNumber(number - 1);
factorialOfNumber(4); // 24
3. 整數(shù)轉數(shù)組
使用擴展符號...
妨马,并結合map
方法。
const convertToArray = number => [...`${number}`].map(el => parseInt(el))
convertToArray(5678); // [5, 6, 7, 8]
注意這里的
${number}
杀赢,而不是number
4. 檢查是否為2的冪數(shù)
這個很簡單明了烘跺,巧妙運用了與(&)
運算符。
const isNumberPowerOfTwo = number => !!number && (number & (number - 1)) === 0;
isNumberPowerOfTwo(100); // false
isNumberPowerOfTwo(128); // true
5. 創(chuàng)建一級對象的鍵值對數(shù)組
本例子只是針對一級對象
創(chuàng)建數(shù)組脂崔,這個數(shù)組是二維的滤淳,其存儲轉換后對象的鍵值對
。
const keyValuePairsToArray = object => Object.keys(object).map(el => [el, object[el]]);
keyValuePairsToArray({ Better: 4, Programming: 2});
// [['Better', 4], ['Programming', 2]]
6. 返回數(shù)字數(shù)組中的最大值
下面我們定義了一個函數(shù)砌左,參數(shù)一是要傳遞的數(shù)字數(shù)組脖咐,參數(shù)二是要返回的數(shù)組長度。當然汇歹,對于返回數(shù)字數(shù)組中的最小值
的思路也是一樣屁擅。
const maxElementsFromArray = (array, len = 1) => [...array].sort((x, y) => y - x).slice(0, len);
maxElementsFromArray([1, 2, 3, 4, 5]); // [5]
maxElementsFromArray([7, 8, 9, 10, 10], 2); // [10, 10]
7. 判斷數(shù)組中的元素是否相同
我們的思路是:將數(shù)組中第二個開始的元素逐個與第一個元素相比較,使用===
符號比較噢产弹。
const elementsAreEqual = array => array.every(el => el === array[0]);
elementsAreEqual([9, 8, 7, 6, 5]); // false
elementsAreEqual([4, 4, 4, 4, 4]); // true
8. 計算平均數(shù)
我們使用reduce
函數(shù)對數(shù)組進行處理派歌,再求平均數(shù)。
舉一反三取视,計算數(shù)的和等也是這種思路
const averageOfNumbers = (...numbers) => numbers.reduce((accumulator, currentValue) => accumulator + currentValue, 0) / numbers.length;
averageOfNumbers(...[6, 7, 8]); // 7
averageOfNumbers(6, 7, 8, 9); // 7.5
?? 注意:上面的代碼并非嚴謹?shù)南踉恚瑳]有考慮到邊界值等小問題,感興趣者可自行擴展作谭,封裝成util方法稽物,畢竟在實際開發(fā)中使用還是可以的~