我有一个带有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);});
它有效。就好像每个迭代的值不作为参数传递给函数。有帮助吗?感谢
答案 0 :(得分:5)
使用三个参数调用_.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
祝你好运!