【问题标题】:JSON array, javascript count [duplicate]JSON数组,javascript计数[重复]
【发布时间】:2021-10-08 15:05:45
【问题描述】:

我在名为 data.json 的本地文件中有一个 JSON 数组,如下所示:

[
    {
        "id":"1",
        "priority": "P1",
        "start_date": "2021-01-01 14:40:33"
    },{
        "id":"2",
        "priority": "P2",
        "start_date": "2019-01-01 14:40:33"
    },{
        "id":"3",
        "priority": "P3",
        "start_date": "2020-01-01 14:40:33"
    },{
        "id":"4",
        "priority": "P2",
        "start_date": "2020-01-01 14:40:33"
    },{
        "id":"5",
        "priority": "P1",
        "start_date": "2021-01-01 14:40:33"
    }
]

我正在尝试通过如下所示的两个条件设置总计数,但是 start_date YYYY-MM-DD HH-MM-SS 上的格式是静态的并且无法更改,我希望能够只寻找前 4 位数字(年份)但仍然无法,有什么困难吗?

import data from "./data.json" assert{ type: "json" };

    var count = 0;
    for (var i = 0; i < data.length; i++) {
        if ((data[i].priority === 'P1') && (data[i].start_date === "2021")) {
            count++;
        }
    }
    console.log(count)

【问题讨论】:

    标签: javascript html json


    【解决方案1】:

    如何改用String.prototype.startsWith:

    import data from "./data.json";
    
    let count = 0;
    
    for (let i = 0; i < data.length; i++) {
      if (data[i].priority === "P1" && data[i].start_date.startsWith("2021")) {
        count++;
      }
    }
    
    console.log(count);
    

    您也可以尝试使用Array.prototype.filter

    const count = data.filter(
      item => item.priority === "P1" && item.start_date.startsWith("2021")
    ).length;
       
    

    或者解构:

    const count = data.filter(
      ({ priority, start_date }) =>
        priority === "P1" && start_date.startsWith("2021")
    ).length;
    

    【讨论】:

    • 谢谢 Alexander,这似乎行得通,我对编程还很陌生,您觉得使用我的方法有什么缺点吗?
    • 例如,“2021”永远不会匹配“2021-01-01 14:40:33”。
    猜你喜欢
    • 1970-01-01
    • 2012-07-06
    • 2014-01-09
    • 1970-01-01
    • 1970-01-01
    • 2020-09-04
    • 1970-01-01
    • 2021-08-29
    • 2012-07-23
    相关资源
    最近更新 更多