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
祝你好运!
我有一个包含 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
祝你好运!