如果我有一个数组someArray
,我第一次想要做一些操作,然后该结果传递给函数arrfun
,它接受一个数组作为参数。像下面合格结果的功能
let arr = someArray.filter(foo).map(bar)
let result = arrfun(arr)
在上述情况下,我想避免分配给被传递到arrfun
中介变量。我想有这样的事情。
Object.prototype.pipe = function(f) {return f(this)}
let result = someArray.filter(foo).map(bar).pipe(arrfun)
- 代替
.pipe()
的你会如何解决这个问题? - 难道是明智的引入功能
Object
? - 是
pipe
这种功能最好的名字?chain
?pass
?
新例如
const pc = options => options
.join(' ')
.match(/--[\w.]* [\w.]*/g)
.map(s => s.slice(2).split(' '))
.map(([key, value]) => ({key, value}))
.map(nestObject)
.reduce((acc, val) => Object.assign(acc, val), {})
const nestObject = ({key, value}) => key
.split('.')
.reverse()
.reduce((inner, key) => ({[key]: inner}), value)
在上述例子中一个问题是,.match
返回null
如果没有找到匹配。使用.pipe
你可以解决它NY改变该行
.pipe(s => s.match(/--[\w.]* [\w.]*/g) || [])
你将如何解决这一不pipe
?
出了什么问题只是'arrfun(someArray.filter (富).MAP(巴))'? – Bergi
如果你真的想在Object.prototype上引入一个新的方法,至少(但不是,[它不是合理的](https)([正确地执行它](http://stackoverflow.com/q/13296340/1048572) ://stackoverflow.com/q/14034180/1048572))。 – Bergi
['chain'](https://github.com/fantasyland/fantasy-land#chain)意思是不同的 – Bergi