gpt4 book ai didi

javascript - 使用 Underscore.js 使用 'contains' 过滤属性上的对象数组

转载 作者:行者123 更新时间:2023-12-04 16:58:56 25 4
gpt4 key购买 nike

我有一个对象数组,我想使用下划线对属性使用包含/任何方法进行过滤。

例如,如果我有以下变量:

var people = [
{
name: 'Dave',
age: 26
},
{
name: 'Frank',
age: 23
}];
var allowedAges = [20, 23, 24];

我想使用下划线得到如下结果:
 var allowedPeople = [];
_.each(_.where(people, { age: _.any()}), function (person) {
allowedPeople.push(person);
});

并且在某些情况下,allowedAges 是一个对象数组,并且 id 想要使用 allowedAges 中对象的属性来使用 people 数组上的 contains/any。

最佳答案

contains 的 JS 等价物通常是 indexOf (和 find 在极少数情况下)。

您可以使用the built-in Array.prototype.filter 这样做:

people.filter(function (person) {
return allowedAges.indexOf(person.age) !== -1; // -1 means not present
});

或带下划线,使用相同的谓词:
_.filter(people, function (person) {
return allowedAges.indexOf(person.age) !== -1; // -1 means not present
}

如果您可以访问 ES6 集合或 Set 的 polyfill ,可以替换 allowedAges带有一组(强制唯一值)的数组,只需使用 Set.prototype.has :
people.filter(person => allowedAges.has(person.age))

关于javascript - 使用 Underscore.js 使用 'contains' 过滤属性上的对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36312239/

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