javascript - JSON 数组,javascript 计数
问题描述
我在名为 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)
解决方案
改用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;
推荐阅读
- amazon-web-services - 有没有办法暂时停止 AWS Kinesis Stream?
- arrays - 将表示二进制数的整数数组转换为十进制数
- android - 多行 React-Native Text 组件的宽度不会调整为 Android 上最长文本行的长度
- web-scraping - 如何使用 Puppeteer Sharp 从 h1 标签中获取文本?
- python-3.x - Odoo API 动态加载数据到不同的实例
- javascript - 注入变量后将 HTML 作为字符串返回的工具
- laravel - Laravel-Vue > 导入公共资产或资源?
- sql - 从脚本创建关系图
- javascript - 扩展搜索栏 - 如果输入文本,则保持扩展状态
- python - Pyspark:用最后一个值前向填充空值