当前位置:  开发笔记 > 编程语言 > 正文

Lodash过滤器和功能组合

如何解决《Lodash过滤器和功能组合》经验,为你挑选了1个好方法。

我有一个带有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);});

有用.就好像每个迭代的值不作为参数传递给函数.有帮助吗?谢谢



1> 小智..:

使用三个参数调用_.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

祝好运!

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有