首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Lodash:当我有嵌套的对象时,我如何使用过滤器?

Lodash:当我有嵌套的对象时,我如何使用过滤器?
EN

Stack Overflow用户
提问于 2013-06-14 05:00:09
回答 5查看 90.6K关注 0票数 72

考虑这个例子。我正在使用Lodash

代码语言:javascript
运行
复制
 'data': [
        {
            'category': {
                'uri': '/categories/0b092e7c-4d2c-4eba-8c4e-80937c9e483d',
                'parent': 'Food',
                'name': 'Costco'
            },
            'amount': '15.0',
            'debit': true
        },
        {
            'category': {
                'uri': '/categories/d6c10cd2-e285-4829-ad8d-c1dc1fdeea2e',
                'parent': 'Food',
                'name': 'India Bazaar'
            },
            'amount': '10.0',
            'debit': true
        },
        {
            'category': {
                'uri': '/categories/d6c10cd2-e285-4829-ad8d-c1dc1fdeea2e',
                'parent': 'Food',
                'name': 'Sprouts'
            },
            'amount': '11.1',
            'debit': true
        },

当我这样做的时候

代码语言:javascript
运行
复制
_.filter(summary.data, {'debit': true})

我把所有的东西都拿回来了。

我想要什么?

我想要category.parent == 'Food'中的所有对象,我该怎么做呢?

我试过了

代码语言:javascript
运行
复制
_.filter(summary.data, {'category.parent': 'Food'})

并得到了

代码语言:javascript
运行
复制
[]
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-06-14 06:27:40

代码语言:javascript
运行
复制
_.filter(summary.data, function(item){
  return item.category.parent === 'Food';
});
票数 48
EN

Stack Overflow用户

发布于 2014-04-26 02:30:50

lodash允许嵌套对象定义:

代码语言:javascript
运行
复制
_.filter(summary.data, {category: {parent: 'Food'}});

从v3.7.0开始,lodash也支持在字符串中指定对象键:

代码语言:javascript
运行
复制
_.filter(summary.data, ['category.parent', 'Food']);

JSFiddle中的示例代码:https://jsfiddle.net/6qLze9ub/

lodash还支持数组嵌套;如果您想筛选数组中的一个项(例如,如果类别是一个数组):

代码语言:javascript
运行
复制
_.filter(summary.data, {category: [{parent: 'Food'}] }); 

如果你真的需要一些自定义的比较,那就是传递函数的时候了:

代码语言:javascript
运行
复制
_.filter(summary.data, function(item) {
  return _.includes(otherArray, item.category.parent);
});
票数 161
EN

Stack Overflow用户

发布于 2015-10-12 21:20:55

v3.7.0开始,你可以这样做:

代码语言:javascript
运行
复制
_.filter(summary.data, 'category.parent', 'Food')
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17096988

复制
相关文章

相似问题

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