gpt4 book ai didi

javascript - 通过在 JSON 数据中查找值来创建新的对象数组

转载 作者:行者123 更新时间:2023-11-29 19:01:17 26 4
gpt4 key购买 nike

不确定我能否做到这一点,但我正在尝试做的是通过搜索一些 JSON 数据来找到一个键并在找到该键时将整个对象放入新数组来创建一个新数组。以下是我正在使用的数据示例。

{
"students": {
"AB10001": {
"campus": "cda",
"subjects": ["history", "english"],
}
"AB10002": {
"campus": "asd",
"subjects": ["maths"],
}
"AB10003": {
"campus": "asd",
"subjects": ["english"],
}
"AB10004": {
"campus": "asd",
"subjects": ["history"],
}
"AB10005": {
"campus": "cda",
"subjects": ["maths", "science"],
}
"AB10006": {
"campus": "asd",
"subjects": ["science"],
}
"AB10007": {
"campus": "cda",
"subjects": ["science"],
}
"AB10008": {
"campus": "asd",
"subjects": ["science", "history"],
}
"AB10009": {
"campus": "cda",
"subjects": ["history"],
}
"AB10010": {
"campus": "cda",
"subjects": ["history", "maths"],
}
}
}

所以我想做的是通过 subjects 的学生键搜索所有做 history 的学生,然后从中创建另一个数组,包括整个学生,同时保持原始对象不变。

所以我想以这样的方式结束:

{
"historyStudents": {
"AB10001": {
"campus": "cda",
"subjects": ["history", "english"],
}
"AB10004": {
"campus": "asd",
"subjects": ["history"],
}
"AB10008": {
"campus": "asd",
"subjects": ["science", "history"],
}
"AB10009": {
"campus": "cda",
"subjects": ["history"],
}
"AB10010": {
"campus": "cda",
"subjects": ["history", "maths"],
}
}
}

任何见解或帮助都会非常有帮助。提前致谢!

最佳答案

您可以使用 Object.keys()reduce() 来创建仅包含具有 history 主题的学生的新对象。

var data = {"students":{"AB10001":{"campus":"cda","subjects":["history","english"]},"AB10002":{"campus":"asd","subjects":["maths"]},"AB10003":{"campus":"asd","subjects":["english"]},"AB10004":{"campus":"asd","subjects":["history"]},"AB10005":{"campus":"cda","subjects":["maths","science"]},"AB10006":{"campus":"asd","subjects":["science"]},"AB10007":{"campus":"cda","subjects":["science"]},"AB10008":{"campus":"asd","subjects":["science","history"]},"AB10009":{"campus":"cda","subjects":["history"]},"AB10010":{"campus":"cda","subjects":["history","maths"]}}}

var result = {
historyStudents: Object.keys(data.students)
.reduce(function(r, e) {
if(data.students[e].subjects.includes('history')) r[e] = data.students[e]
return r;
}, {})
}

console.log(result)

关于javascript - 通过在 JSON 数据中查找值来创建新的对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46793748/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com