javascript - 用Javascript中的JSON值过滤掉特定的键?
问题描述
我正在尝试在 javascript 中创建一个动态生成的表,并且我有一个 JSON,我需要从中过滤特定信息
要从中提取的 JSON (courseList)
let courseList = [
{
"Line": 81,
"Department": "BUS",
"Number": 344,
"Section": 1,
"Title": "MANAGEMENT OF INFORMATION SYSTEMS",
"Faculty": "Smith, John",
"Openings": 2,
"Capacity": 30,
"Status": "Open",
"Day": "MWF",
"StartTime": "1:25:00 PM",
"EndTime": "2:20 PM",
"Campus": " Main Campus",
"Building": " Science and Engineering",
"Room": " SE 341 Computer Science Lab",
"Credits": 3,
"Start Date": "8\/30\/2021",
"End Date": "12\/17\/2021\r\n"
},
{
"Line": 167,
"Department": "CSC",
"Number": 133,
"Section": 2,
"Title": "SURVEY OF COMPUTER SCIENCE",
"Faculty": "Scott, John",
"Openings": 6,
"Capacity": 15,
"Status": "Open",
"Day": "H",
"StartTime": "2:00:00 PM",
"EndTime": "4:50 PM",
"Campus": " Main Campus",
"Building": " Science and Engineering",
"Room": " SE 341 Computer Science Lab",
"Credits": 0,
"Start Date": "8\/30\/2021",
"End Date": "12\/17\/2021\r\n"
}
]
我想运行某种方法从现有的 JSON 生成另一个 JSON。看起来像这样
预期结果
let filteredCourses = [
{
"Title": "MANAGEMENT OF INFORMATION SYSTEMS",
"Faculty": "Smith, John",
"Openings": 2,
},
{
"Title": "SURVEY OF COMPUTER SCIENCE",
"Faculty": "Scott, John",
"Openings": 6,
}
]
我还是 javascript 的新手,但我知道我使用过的数组有一个过滤器方法,但这只给了我课程列表中的键或值。我也尝试过使用 push 方法,但运气不佳。
有什么方法可以将我需要的特定键和值对直接过滤到 JSON 中,或者我可以分别过滤掉键和值并将它们组合起来吗?我不确定最好的方法是什么。
解决方案
filter 函数用于根据您定义的函数从数组中过滤元素。
例如,如果您想过滤掉所有没有空缺的课程,您可以使用
const filteredCourse = courseList.filter(a => a.Openings > 0);
但是您要做的是对每个元素执行操作。为此,您要使用地图。像这样:
const filteredList = courseList.map(a => ({ Title: a.Title, Faculty: a.Faculty, Openings: a.Openings }));
这是一个片段:
const courseList = [
{
"Line": 81,
"Department": "BUS",
"Number": 344,
"Section": 1,
"Title": "MANAGEMENT OF INFORMATION SYSTEMS",
"Faculty": "Smith, John",
"Openings": 2,
"Capacity": 30,
"Status": "Open",
"Day": "MWF",
"StartTime": "1:25:00 PM",
"EndTime": "2:20 PM",
"Campus": " Main Campus",
"Building": " Science and Engineering",
"Room": " SE 341 Computer Science Lab",
"Credits": 3,
"Start Date": "8\/30\/2021",
"End Date": "12\/17\/2021\r\n"
},
{
"Line": 167,
"Department": "CSC",
"Number": 133,
"Section": 2,
"Title": "SURVEY OF COMPUTER SCIENCE",
"Faculty": "Scott, John",
"Openings": 6,
"Capacity": 15,
"Status": "Open",
"Day": "H",
"StartTime": "2:00:00 PM",
"EndTime": "4:50 PM",
"Campus": " Main Campus",
"Building": " Science and Engineering",
"Room": " SE 341 Computer Science Lab",
"Credits": 0,
"Start Date": "8\/30\/2021",
"End Date": "12\/17\/2021\r\n"
}
]
const filteredList = courseList.map(a => ({ Title: a.Title, Faculty: a.Faculty, Openings: a.Openings }));
console.log(filteredList);
阅读 map() filter() 和 reduce()。它们是非常有用的功能,如果有时有点难以理解的话。
推荐阅读
- ffmpeg - 在 FFmpeg 的 filter_complex 树中使用多个“拆分”过滤器是否不正确?
- r - Filling holes in intraday time series
- coq - 不同的参数,但函数的行为是相同的
- git - 无法将文件添加到 git,严重
- validation - 使用 Plug 验证特定端点的标头
- python - 使用 Python 将名称拆分为名字、中间名和姓氏
- javascript - reactJS中的表单验证
- excel - 如果不是数字到底部,Excel VBA 将列表框数据排序
- java - java从网页中获取元素到变量中
- javascript - 使用 React 为 onHover 和 onClick 着色表行