gpt4 book ai didi

javascript - 具有多个值的键上的 lodash 过滤器

转载 作者:搜寻专家 更新时间:2023-11-01 04:14:05 26 4
gpt4 key购买 nike

我试图在 lodash javascript library 中找出如何找出多个键值的对象过滤器数组。 类似于 SQL - WHERE KEY in (val1, val2)

话虽如此,下面的例子:

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

_.filter(...)

如何找到年龄在 (34, 36) 的用户??数字也可以改变运行时间

最佳答案

Lodash 的 filter接受谓词。您可以使用部分应用程序创建谓词,因此您可以轻松更改值:

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

var predicate = function(start, end) {
return function(user) {
return _.inRange(user.age, start, end + 1);
}
}

var result = _.filter(users, predicate(34, 36));

console.log('inRange', result);

/** is equal predicate **/

var predicate = function() {
var args = _.toArray(arguments);

return function(user) {
var equalToUserAge = _.partial(_.isEqual, user.age);

return args.some(equalToUserAge);
}
}

var result = _.filter(users, predicate(34, 40));

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

您也可以使用 vanilla JS 轻松完成此操作(示例使用 ES6):

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

const predicate1 = (start, end) => ({ age }) =>
age >= start && age <= end;

const result1 = users.filter(predicate1(34, 36));

console.log('in range', result1);

const predicate2 = (...args) => ({ age }) =>
args.some((num) => age === num);

const result2 = users.filter(predicate2(34, 40));

console.log('is equal', result2);

关于javascript - 具有多个值的键上的 lodash 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39922160/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com