我试图使用_.filter属性来过滤数组。我想使用matchesProperty简写,但不想直接比较。
例如。这有效: .each( .filter(this.across,[' len',3]),dostuff);
但如果我想过滤小于9的值,我需要使用一个函数: .each( .filter(this.across,function(o){return o.len< 9}),dostuff);
有更简洁的方法吗?
答案 0 :(得分:1)
我不知道dostuff
和this.across
是什么,但我们假设你有一个属性为len
的对象数组,并且你想过滤值不到9岁。
你可以用一种免费的功能风格来做这件事,只需要使用lodash,但它会比你只使用箭头功能看起来更复杂。 matchesProperty
简写仅适用于相等比较,因此在这种情况下不能使用。
请参阅以下两个选项:
const arr = [
{ len: 2 }, // keep
{ len: 5 }, // keep
{ len: 9 },
{ len: 22 },
{ len: 8 } // keep
]
// point free functional style
const filtered = _.filter(arr, _.flow(_.property('len'), _.partial(_.gt, 9)))
// with arrow function
const filtered2 = _.filter(arr, o => o.len < 9)
console.log(filtered)
console.log(filtered2)
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
&#13;