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