【发布时间】:2019-11-20 17:52:28
【问题描述】:
我将学生 ID 与分数映射的对象如下:
[
{id: 111, marks: [{sub: 'eng', mark: 90}, {sub: 'maths', mark: 20}]},
{id: 222},
{id: 333, marks: []},
{id: 444, marks: [{sub: 'eng', mark: 70}]}
]
我想将其减少如下:
{
marks[0]: "0:eng:90", // studentIndex:subject_name:mark
marks[1]: "0:maths:20",
marks[2]: "3:eng:70"
}
在上面的结果中,键是“marks[]”,值是一个字符串,它是studentIndex、主题和标记的串联。 所以这里的 0:eng:90 表示索引为 0 的学生在英语科目中获得了 90 分
我正在使用 lodash,我尝试了以下方法:
reduce(studentList, (acc, student, studentIndex) => {
map(get(student, 'marks'), (marks) => {
acc[`marks[${keys(acc).length}]`] = `${studentIndex}:${marks.sub}:${marks.mark}`;
});
return acc;
}, {});
还有其他更好的方法吗?
【问题讨论】:
标签: javascript arrays object ecmascript-6 lodash