【发布时间】:2016-03-07 23:17:34
【问题描述】:
我有一个带有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);});
它有效。就像每次迭代的值没有作为参数传递给函数一样。有什么帮助吗?谢谢
【问题讨论】:
-
有趣!看着它,想起我为什么现在用 es6 :) (
myArray.filter(a => a.media.length))
标签: javascript functional-programming underscore.js lodash