首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用值数组的lodash过滤器集合

使用值数组的lodash过滤器集合
EN

Stack Overflow用户
提问于 2013-06-22 22:23:57
回答 6查看 69.3K关注 0票数 60

我想用属性值的数组来过滤一个集合。给定一个ID数组,返回具有匹配ID的对象。是否有使用lodash/underscore的快捷方式

代码语言:javascript
复制
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
});
EN

回答 6

Stack Overflow用户

发布于 2015-11-24 02:40:26

一个使用indexBy()at()的简明的lodash解决方案。

代码语言:javascript
复制
// loDash 4
_.chain(collections)
 .keyBy('id')
 .at(ids)
 .value();

// below loDash 4
_(collections)
 .indexBy('id')
 .at(ids)
 .value();
票数 47
EN

Stack Overflow用户

发布于 2016-06-15 19:23:14

我们也可以像这样过滤

代码语言:javascript
复制
var collections = [{ id: 1, name: 'xyz' },
            { id: 2,  name: 'ds' },
            { id: 3,  name: 'rtrt' },
            { id: 4,  name: 'nhf' },
            { id: 5,  name: 'qwe' }];



        var filtered_ids = _.filter(collections, function(p){
            return _.includes([1,3,4], p.id);
        });

        console.log(filtered_ids);
票数 19
EN

Stack Overflow用户

发布于 2018-04-21 05:50:17

这对我来说很有效:

代码语言:javascript
复制
let output = _.filter(collections, (v) => _.includes(ids, v.id));
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17251764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档