如何使用js过滤json得到结果?

时间:2017-01-11 10:00:41

标签: javascript jquery json

有一个像这样的json

{
"SkuProduct": [
    {
        "ProductId": 2547,
        "ProductName": "T-shirt",
        "SalePrice": 0.03,
        "SkuProps": [
            {
                "PropValueId": 30,
                "PropCode": "body_type_cn"
            },
            {
                "PropValueId": 16,
                "PropCode": "color_cn"
            },
            {
                "PropValueId": 20,
                "PropCode": "size_cn"
            }
        ]
    },
    {
        "ProductId": 2553,
        "ProductName": "T-shirt",
        "SalePrice": 0.05,
        "SkuProps": [
            {
                "PropValueId": 31,
                "PropCode": "body_type_cn"
            },
            {
                "PropValueId": 16,
                "PropCode": "color_cn"
            },
            {
                "PropValueId": 20,
                "PropCode": "size_cn"
            }
        ]
    },
    {
        "ProductId": 2559,
        "ProductName": "T-shirt",
        "SalePrice": 0.07,
        "SkuProps": [
            {
                "PropValueId": 30,
                "PropCode": "body_type_cn"
            },
            {
                "PropValueId": 16,
                "PropCode": "color_cn"
            },
            {
                "PropValueId": 20,
                "PropCode": "size_cn"
            }
        ]
    },
    {
        "ProductId": 2563,
        "ProductName": "T-shirt",
        "SalePrice": 0.08,
        "SkuProps": [
            {
                "PropValueId": 31,
                "PropCode": "body_type_cn"
            },
            {
                "PropValueId": 16,
                "PropCode": "color_cn"
            },
            {
                "PropValueId": 23,
                "PropCode": "size_cn"
            }
        ]
    },
    {
        "ProductId": 2565,
        "ProductName": "T-shirt",
        "SalePrice": 0.09,
        "SkuProps": [
            {
                "PropValueId": 31,
                "PropCode": "body_type_cn"
            },
            {
                "PropValueId": 16,
                "PropCode": "color_cn"
            },
            {
                "PropValueId": 20,
                "PropCode": "size_cn"
            }
        ]
    }
],
"SellProps": [
    {
        "PropCode": "color_cn",
        "PropName": "Color",
        "Props": [
            {
                "Id": 16,
                "PName": "Red"
            }
        ]
    },
    {
        "PropCode": "size_cn",
        "PropName": "Size",
        "Props": [
            {
                "Id": 20,
                "PName": "M"
            },
            {
                "Id": 23,
                "PName": "XXL"
            }
        ]
    },
    {
        "PropCode": "body_type_cn",
        "PropName": "Type",
        "Props": [
            {
                "Id": 30,
                "PName": "165/80A"
            },
            {
                "Id": 31,
                "PName": "170/84A"
            }
        ]
    }
]

}

enter image description here

你可以检查图片,当我点击XXL选项时,你可以从'SellProps'找到它,id是23,我需要使用id来过滤'SkuProduct', 我需要从SkuProduct循环SkuProps来检查PropCode名称'size_cn',正如你所看到的,PropValueId没有匹配,所有20都是大小'M',所以我应该选择其余的选项.. 我不知道我的描述非常清楚..

每次单击某个选项时,是否有一种简单的方法可以检查,它可以告诉哪个选项应该禁用...最后可以获得自己的ProductId ..?我在函数中写了一个循环,函数中有太多的循环..它如此错误..

1 个答案:

答案 0 :(得分:0)

我想我有一个(未经考验的)想法。

由于您已经拥有XXL id(23),因此您可以使用此值执行以下操作:

1000 loops, best of 3: 1.63 ms per loop

这将返回一个数组,该数组包含一个带有产品的对象,以及一个SkuProp对象(如果在产品的道具中找到大小)或者什么都没有。玩弄它并告诉我它是否有效,或者至少让你走上正确的道路。

祝你好运!