Javascript如何从JSON数组中筛选指定键值对生成新数组
问题原因
你之前用filter方法没达到效果是因为对方法的定位搞混了:
Array.prototype.filter()的作用是筛选数组中符合条件的完整元素,只会保留/删除整个对象,不会修改对象内部的字段结构- 你需要的是对每个元素的结构做转换,应该使用
Array.prototype.map()方法,它可以遍历原数组的每一项,返回你自定义的新结构,最终组成新数组。
实现代码
基础写法(适合初学者理解)
let filteredCourses = courseList.map(function(course) { return { Title: course.Title, Faculty: course.Faculty, Openings: course.Openings } })
简写版本(利用解构赋值,后续维护更方便)
如果后续需要增减保留的字段,直接修改解构的字段列表即可:
let filteredCourses = courseList.map(({ Title, Faculty, Openings }) => ({ Title, Faculty, Openings }))
扩展场景
如果你同时需要先过滤符合条件的课程(比如只要仍在开放状态、有空位的课程),可以链式调用filter和map:
let filteredCourses = courseList // 先筛选符合条件的完整课程对象 .filter(course => course.Status === 'Open' && course.Openings > 0) // 再提取需要的字段 .map(({ Title, Faculty, Openings }) => ({ Title, Faculty, Openings }))
内容的提问来源于stack exchange,提问作者EmotionalToast
相关产品推荐
相关产品推荐

