使用大于Lo Dash

时间:2017-12-04 15:31:27

标签: reactjs filter lodash

如何使用大于和小于Lo Dash的数据来过滤数组?

使用Lo Dash的_.find demo data

 var users = [
  { 'user': 'barney',  'age': 36, 'active': true },
  { 'user': 'fred',    'age': 40, 'active': false },
  { 'user': 'pebbles', 'age': 1,  'active': true }
];

我想找到30岁以上的所有用户。

var over30 = _.find(users, function(o) { return o.age > 30; });

然而,这将使第一个用户Barney退回,而不是Barney和Fred。

我尝试了以下不同的组合。

_.find(users, ['age', > 30]);

2 个答案:

答案 0 :(得分:4)

您可以改用filter()方法。 filter将返回所有传递条件的元素,而find将退出循环并返回在条件下返回true的第一个元素。



var users = [
  { 'user': 'barney',  'age': 36, 'active': true },
  { 'user': 'fred',    'age': 40, 'active': false },
  { 'user': 'pebbles', 'age': 1,  'active': true }
];

var over30 = _.filter(users, ({age}) => age > 30)
console.log(over30)

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

来自DOC

  

查找,迭代集合的元素,返回第一个元素   元素谓词返回truthy for。

find总是返回第一个元素而不是满足条件的所有元素。

您需要使用filter

  

迭代集合的元素,返回所有的数组   元素谓词返回truthy for。

像这样写:

var over30 = _.filter(users, function(o) { return o.age > 30; })

工作片段:

var users = [
  { 'user': 'barney',  'age': 36, 'active': true },
  { 'user': 'fred',    'age': 40, 'active': false },
  { 'user': 'pebbles', 'age': 1,  'active': true }
];

var over30 = _.filter(users, el => el.age > 30);

console.log('over30 = ', over30);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>