我有一个带有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);
当我尝试使用这样的函数作为_.filter的谓词时,它总是失败(如示例中所示),但如果我写:
var splittedArray = _.filter(array, function (x) { return mediaEmptyComparer(x);});
有用.就好像每个迭代的值不作为参数传递给函数.有帮助吗?谢谢
使用三个参数调用_.filter()方法的谓词:value,index | key和collection.
使用_.ary()方法限制方法接受的参数数量.
https://lodash.com/docs#ary
var splittedArray = _.filter(array, _.ary(mediaEmptyComparer, 1));
有关更多信息,请查看:https: //github.com/lodash/lodash/issues/844
祝好运!