不确定我能做到这一点,但我想做的是通过搜索一些 JSON 数据来查找 key 来创建一个新数组,如果找到 key ,则将整个对象放入新数组中。以下是我正在使用的数据示例。
{
"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
的students键,找到所有做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/