【问题标题】:How to pick and compare value with JSON data?如何使用 JSON 数据挑选和比较价值?
【发布时间】:2025-11-24 16:35:02
【问题描述】:

我希望根据此 JSON 数据获取活跃产品的数量。

$(document).ready (function () {


var JSONdata = {
    "products":[
          {
            "id_product":"261",
            "status":"Active",
            "price":"50.00"
          },
          {
            "id_product":"267",
            "status":"Active",
            "price":"100.00"
          },
          {
            "id_product":"280",
            "status":"Inactive",
            "price":"600.00"
          }

    ]


};     

 alert("Active products : " + JSON.stringify(JSONdata.length));


  //Excepted result
  //Active products : 2 

});

我做了一个 JSfiddle,我不知道如何计算活跃产品的数量。

http://jsfiddle.net/ot6emj0n/2/

此 JSON 数据包含 3 个产品,2 个有效和 1 个无效。

我正在寻找的例外结果是“活动产品:2”

【问题讨论】:

    标签: javascript jquery json


    【解决方案1】:

    使用 filter() ,根据您的条件使用 filter() 过滤数组,然后得到它的长度。

    var JSONdata = {
      "products": [{
        "id_product": "261",
        "status": "Active",
        "price": "50.00"
      }, {
        "id_product": "267",
        "status": "Active",
        "price": "100.00"
      }, {
        "id_product": "280",
        "status": "Inactive",
        "price": "600.00"
      }]
    };
    
    
    alert("Active products : " + JSONdata.products.filter(function(v) {
      return v.status == "Active";
    }).length);

    注意: JSONdata 是一个没有 length 属性的对象。您需要为数组使用JSONdata.products

    【讨论】:

    • 这个答案效果很好,我想知道为什么 JSONdata.products 给了我“未定义”但是我在 JSONdata.products 的末尾添加了它 [1] 它给了我一个列表,无论如何谢谢。跨度>
    【解决方案2】:

    我已经为您制作并更新了 JSfiddle,它将返回活动产品:http://jsfiddle.net/7es6vuc1/3/

    $(document).ready (function () {
    
    
        var JSONdata = {
            "products":[
                {
                    "id_product":"261",
                    "status":"Active",
                    "price":"50.00"
                },
                {
                    "id_product":"267",
                    "status":"Active",
                    "price":"100.00"
                },
                {
                    "id_product":"280",
                    "status":"Inactive",
                    "price":"600.00"
                }
            ]    
        };
    
        var totalProducts = JSONdata.products.length,
            activeProducts = 0,
            inactiveProducts = 0;
    
        $.each(JSONdata.products, function (key, val) {
            if (val.status === 'Active') {
                activeProducts++;
            }
        });
    
        inactiveProducts = totalProducts - activeProducts;
    
        $('#total').text(totalProducts);
        $('#active').text(activeProducts);
        $('#inactive').text(inactiveProducts);
    
    });
    

    基本上,您需要遍历对象并查找状态属性,然后计算活动对象。

    【讨论】: