Underscore.js - 在嵌套的Json中过滤 [英] Underscore.js - filtering in a nested Json

查看:73
本文介绍了Underscore.js - 在嵌套的Json中过滤的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想得到所有值,其中category.id = 1所以我应该得到2个结果

I want to get all values, where the category.id = 1 so i should get 2 results

我的JSON看起来像这样:

My JSON looks like this:

var test = [
            {
                "id": 1,
                "name": "name1",
                "value": "value1",
                "category": {
                    "id": 1,
                    "name": "category1"
                }
            },
            {
                "id": 2,
                "name": "name2",
                "value": "value2",
                "category": {
                    "id": 1,
                    "name": "category1"
                }
            },
            {
                "id": 3,
                "name": "name3",
                "value": "value3",
                "category": {
                    "id": 2,
                    "name": "category2"
                }
            }
        ];

我的JavaScript看起来像这样:

my JavaScript looks like this:

var x = _.filter(test,
            function (innerObject) {
                return _.filter(innerObject,
                    function (category) {
                        return  category.id === 1;
                    });
            });

console.log(x);

我做了一个JS小提琴但我每次都得到所有3个元素...不仅仅是2个正确的元素!

I made a JS Fiddle but i get everytime all 3 elements back... not only the 2 correct ones!

我也尝试过像

var x = _.where(test, {"category":{"id":2}});
console.log(x);

对我来说似乎合乎逻辑,但数组总是空的

what seems to be logical for me, but the array is always empty

另一个jsFiddle

我希望有人可以告诉我我做错了什么...

谢谢!

I hope somebody can tell me what i made wrong...
Thank You!

推荐答案

那是因为你在哪里搜索一个完全像 {category:{id:1}} 的元素,你的对象是 {category:{id:1,name:category1}}

That's because with where you're searching for an element that is EXACTLY like {"category":{"id":1}} and your object is {"category":{"id":1,"name":"category1"}}

尝试

_.filter(test, function(a){ return a.category && a.category.id === 1; });

这篇关于Underscore.js - 在嵌套的Json中过滤的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆