0

我试图弄清楚如何计算一个非常大的 JSON 文件中的不同值。

下面我包含了我的 10,000 多行 JSON 文件中的一小部分。我需要以数字形式计算“status”:“booked”“status”:“free”的总数。

[
  {
    "eventId": 126363,
    "eventKey": "4749466",
    "objectLabelOrUuid": "uuid8083",
    "status": "booked",
    "quantity": 1,
    "ticketType": null,
    "holdTokenHash": null,
    "version": 3,
    "extraData": null
  },
  {
    "eventId": 126363,
    "eventKey": "4749466",
    "objectLabelOrUuid": "uuid11392",
    "status": "free",
    "quantity": 0,
    "ticketType": null,
    "holdTokenHash": null,
    "version": 6,
    "extraData": null
  },
  {
    "eventId": 126363,
    "eventKey": "4749466",
    "objectLabelOrUuid": "uuid8051",
    "status": "booked",
    "quantity": 1,
    "ticketType": null,
    "holdTokenHash": null,
    "version": 2,
    "extraData": null
  }
]

将它们转换为数字形式后,我将把值放在 html 文档中

Seats Booked: <a id="booked"></a> Seats Free: <a id="free"></a>

预期输出:

Seats Booked: 2 Seats Free: 1

据我了解,我可以使用 foreach 方法来获取数据,但我无法计算它们。如果您有任何想法或最好的文档可以链接到此处,请在此处告诉我!

4

2 回答 2

1

您可以在迭代时计算它们。

为了将值分配给元素,您可以获取对象的所有条目并将键用作 id 并将值分配给元素。

使用的技术:

var data = [{ eventId: 126363, eventKey: "4749466", objectLabelOrUuid: "uuid8083", status: "booked", quantity: 1, ticketType: null, holdTokenHash: null, version: 3, extraData: null }, { eventId: 126363, eventKey: "4749466", objectLabelOrUuid: "uuid11392", status: "free", quantity: 0, ticketType: null, holdTokenHash: null, version: 6, extraData: null }, { eventId: 126363, eventKey: "4749466", objectLabelOrUuid: "uuid8051", status: "booked", quantity: 1, ticketType: null, holdTokenHash: null, version: 2, extraData: null }],
    count = { booked: 0, free: 0 };

window.onload = function() {
    data.forEach(({ status }) => count[status]++);
    Object.entries(count).forEach(([id, value]) =>
        document.getElementById(id).innerHTML = value);
};
Seats Booked: <a id="booked"></a> Seats Free: <a id="free"></a>

于 2018-07-04T09:12:23.363 回答
0

为数组命名

var Arr = [{ eventId: 126363, eventKey: "4749466", objectLabelOrUuid: "uuid8083", status: "booked", quantity: 1, ticketType: null, holdTokenHash: null, version: 3, extraData: null }, { eventId: 126363, eventKey: "4749466", objectLabelOrUuid: "uuid11392", status: "free", quantity: 0, ticketType: null, holdTokenHash: null, version: 6, extraData: null }, { eventId: 126363, eventKey: "4749466", objectLabelOrUuid: "uuid8051", status: "booked", quantity: 1, ticketType: null, holdTokenHash: null, version: 2, extraData: null }];
    

// and run a simple for loop to filter both values from each item

var Booked = 0,
  Free = 0;
for (var i = 0; i < Arr.length; i++) {
  if (Arr[i].status == "booked") {
    Booked++;
  } else {
    Free++;
  }
};

// now you can put these 2 variables into html like

document.getElementById("booked").innerHTML = Booked;
document.getElementById("free").innerHTML = Free;
Seats Booked: <a id="booked"></a> Seats Free: <a id="free"></a>

于 2018-07-04T09:27:41.787 回答