Javascript 如何使用js过滤json以获得结果?

Javascript 如何使用js过滤json以获得结果?,javascript,jquery,json,Javascript,Jquery,Json,有这样一个json { "SkuProduct": [ { "ProductId": 2547, "ProductName": "T-shirt", "SalePrice": 0.03, "SkuProps": [ { "PropValueId": 30, "PropCode": "body_type_cn" },

有这样一个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"
            }
        ]
    }
]
}

您可以查看图片,当我单击XXL选项时,您可以从“SellProps”中找到它,id为23,我需要使用id从“SkuProduct”中筛选, 我需要从SKU产品中循环SkuProps。。要检查PropCode名称'size\u cn',正如您所看到的,没有与PropValueId匹配的名称,它全部是20个,大小为'M',因此我应该将该选项的其余部分禁用。。 我不知道我描述得是否很清楚

是否有一个简单的方法来检查每次当我点击一个选项,它可以告诉哪些选项应该禁用或不。。。最终可以获得自己的ProductId。。?我在函数中写了一个循环,函数中的循环太多了。。车太多了

我想我有一个(未经测试的)想法

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

SkuProduct.map(function(product) {
  return {product: product, filter: value.SkuProps.filter(function(prop) {
    return prop.PropValueId = sizeId;
  })};
});
这将返回一个数组,其中包含产品的一个对象,或者是一个SkuProp对象(如果在产品的道具中找到了大小),或者什么都没有。试试看,告诉我它是否有效,或者至少让你走上了正确的道路

祝你好运

可能重复的