一篇帶你學(xué)習(xí)unary 方法
使用方便有用的方法,以減少代碼行數(shù),提高我們的工作效率,增加我們的摸魚時(shí)間。
unary 方法
功能:創(chuàng)建一個(gè)最多接受一個(gè)參數(shù)的函數(shù),忽略任何附加參數(shù)。
實(shí)現(xiàn)
- const unary = fn => val => fn(val);
調(diào)用所提供的函數(shù)fn,只提供第一個(gè)參數(shù)。
示例
- ['6', '8', '10'].map(unary(parseInt)); // [6, 8, 10]
解釋一下
我們知道 map() 方法返回一個(gè)新數(shù)組,數(shù)組中的元素為原始數(shù)組元素調(diào)用函數(shù)處理后的值。
- array.map(function(currentValue,index,arr), thisValue)
map 回調(diào)函數(shù)有三個(gè)參數(shù):
- currentValue:必須,當(dāng)前元素的值
- index: 可選。當(dāng)前元素的索引值
- arr: 可選。當(dāng)前元素屬于的數(shù)組對象
在回到 我們的示例
unary(parseInt) 等價(jià)于 (val) => parseInt(val)。
- ['6', '8', '10'].map(unary(parseInt)) 等價(jià)于 ['6', '8', '10'].map((currentValue, index, arr) => parseInt(currentValue))
三次迭代的結(jié)果分別是:
- parseInt('6')
- parseInt('8')
- parseInt('10')
所以最終得到結(jié)果是 [6, 8, 10]