pis*_*hio 4 javascript functional-programming underscore.js lodash
我有一个带有media
键的对象数组,其值可能为空,也可能不为空.我有一个函数来选择该键值和一个函数,该函数检查该值是否为空,因此mediaEmptyComparer({media: ''})
返回true并mediaEmptyComparer({media: 'somevalue'})
为false.
var array = _.times(100, function () { return {media: Math.random() < 0.5 ? '' : 'value'} });
var mediaPicker = _.partialRight(_.get, 'media');
var mediaEmptyComparer = _.flow(mediaPicker, _.isEmpty);
var splittedArray = _.filter(array, mediaEmptyComparer);
console.log(splittedArray);
Run Code Online (Sandbox Code Playgroud)
当我尝试使用这样的函数作为_.filter的谓词时,它总是失败(如示例中所示),但如果我写:
var splittedArray = _.filter(array, function (x) { return mediaEmptyComparer(x);});
Run Code Online (Sandbox Code Playgroud)
有用.就好像每个迭代的值不作为参数传递给函数.有帮助吗?谢谢
小智 5
使用三个参数调用_.filter()方法的谓词:value,index | key和collection.
使用_.ary()方法限制方法接受的参数数量.
https://lodash.com/docs#ary
var splittedArray = _.filter(array, _.ary(mediaEmptyComparer, 1));
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请查看:https: //github.com/lodash/lodash/issues/844
祝好运!
归档时间: |
|
查看次数: |
532 次 |
最近记录: |