使用lodash过滤对象属性

时间:2017-11-16 20:14:11

标签: filter lodash

我试图使用_.filter属性来过滤数组。我想使用matchesProperty简写,但不想直接比较。

例如。这有效:      .each( .filter(this.across,[' len',3]),dostuff);

但如果我想过滤小于9的值,我需要使用一个函数:      .each( .filter(this.across,function(o){return o.len< 9}),dostuff);

有更简洁的方法吗?

1 个答案:

答案 0 :(得分:1)

我不知道dostuffthis.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;
&#13;
&#13;