Lodash过滤器和功能组合

Lodash filter and functional composition

我有一个包含 media 键和可能为空或可能不为空的值的对象数组。我有一个函数来选择该键值和一个函数来检查该值是否为空,以便 mediaEmptyComparer({media: ''}) returns 为真且 mediaEmptyComparer({media: 'somevalue'}) 为假。

    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

祝你好运!