【问题标题】:Using greater than with Lo Dash使用大于与 Lo Dash
【发布时间】:2018-05-18 02:49:32
【问题描述】:

如何使用大于和小于 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]);

【问题讨论】:

  • 值得注意的是,这也可以通过原生函数来完成:[{age: 36}, {age: 40}, {age: 1}].filter(p => p.age > 30);

标签: reactjs filter lodash


【解决方案1】:

您可以改用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>

【讨论】:

  • 干得漂亮!谢谢内纳德 :)
【解决方案2】:

来自DOC

find,遍历集合的元素,返回第一个 元素谓词返回真值。

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

你需要使用filter:

遍历集合的元素,返回一个包含所有元素的数组 元素谓词返回真值。

这样写:

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

工作sn-p:

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>

【讨论】:

  • 感谢 Mayank 的澄清
  • 很高兴,它帮助了你:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-19
  • 2013-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多