【发布时间】:2020-08-14 15:14:03
【问题描述】:
我有这样的函数,我将 classid 传递给它
selectedSubjects;
classnamewithid;
subjectNameByID;
selectClass(selectedClass) {
this.selectedSubjects = this.topicWithClassSubjectList.filter(
(topic) => topic.class_id === selectedClass
); // to filter out class with same id
const groups = this.selectedSubjects.reduce((acc, cur) => {
(acc[cur.subject_id] = acc[cur.subject_id] || []).push(cur.topic_name);
return acc;
}, {}); // to group the array according to subject
// checkpoint#1
this.selectedSubjects = Object.keys(groups).map((key) => ({
subject_id: key,
topics: groups[key],
}));
}
我的班级列表数组是这样的
{class_id: 1871, class_name: "1st"},
{class_id: 1872, class_name: "2nd"},
checkpoint#1 之后的 selectedSubjects 的最终数组是
[{"subject_id":"551","topics":["Evolution"]},{"subject_id":"711","topics":["Vector"]}]
我希望在 selectedSubjects 数组中拥有一个与每个 subject_id 相关联的 subjectName。我有一个 subjectId 数组,SubjectName 为:
{class_id: 2711, subject_id: 551, subject_name: "Biology"}
我希望 selectedSubjects 数组看起来像这样
[{"subject_id":"551", "subject_name":"biology", topics":["Evolution"]},{"subject_id":"711","subject_name":"science","topics ":["向量"]}]
【问题讨论】:
-
那么,您的主题名称在哪里?请edit 您的问题以minimal reproducible example 的形式在代码中包含示例数据,准备运行。您可以使用Stack Snippets(工具栏中的图标类似于
<>)来执行此操作。看来 Angular 和 TypeScript 对这个问题并不重要,你可以构建你的代码,这样this.是不必要的。
标签: javascript arrays angular typescript array-merge