gpt4 book ai didi

underscore.js - lodash 使用值数组的过滤器集合

转载 作者:行者123 更新时间:2023-12-03 05:55:50 26 4
gpt4 key购买 nike

我想使用属性值数组来过滤集合。给定一个 ID 数组,返回具有匹配 ID 的对象。有没有使用lodash/下划线的快捷方法?

var collections = [{ id: 1, name: 'xyz' },
{ id: 2, name: 'ds' },
{ id: 3, name: 'rtrt' },
{ id: 4, name: 'nhf' },
{ id: 5, name: 'qwe' }];
var ids = [1,3,4];

// This works, but any better way?

var filtered = _.select(collections, function(c){
return ids.indexOf(c.id) != -1
});

最佳答案

如果您要经常使用这种模式,您可以创建一个如下所示的 mixin,不过,它与您的原始代码没有任何本质上的不同。它只是使其对开发人员更加友好。

_.mixin({
'findByValues': function(collection, property, values) {
return _.filter(collection, function(item) {
return _.contains(values, item[property]);
});
}
});

然后就可以这样使用了。

var collections = [
{id: 1, name: 'xyz'},
{id: 2, name: 'ds'},
{id: 3, name: 'rtrt'},
{id: 4, name: 'nhf'},
{id: 5, name: 'qwe'}
];

var filtered = _.findByValues(collections, "id", [1,3,4]);

更新 - 上面的答案既旧又笨重。请使用answer from Adam Boduch以获得更优雅的解决方案。

_(collections)
.keyBy('id') // or .indexBy() if using lodash 3.x
.at(ids)
.value();

关于underscore.js - lodash 使用值数组的过滤器集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17251764/

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