【发布时间】:2021-11-20 05:05:15
【问题描述】:
<ol className={classes.ol}>
{props.data.definitions
.sort((a, b) => a.partOfSpeech.localeCompare(b.partOfSpeech))
.map((definition, index) => {
return (
<>
<h3>{definition.partOfSpeech}</h3>
<li key={index} className={classes.list}>
{definition.definition.charAt(0).toUpperCase() +
definition.definition.slice(1)}{" "}
({definition.partOfSpeech})
</li>
</>
);
})}
</ol>
上面是按字母顺序对“partofSpeech”进行排序并输出带有单词定义的词性的代码。如果词性相同,我试图只显示一次词性。当前输出如下所示。
是否可以在顶部仅显示一次词性并根据该词性呈现列表?我尝试使用 reduce 并比较对象的 partOfSpeech 仍然无法达到我想要的效果。
我想要达到的目标:
【问题讨论】:
-
您可以使用 _.groupBy(props.data.definitions, def => def.partofSpeech) 对基于“partofSpeech”的数据进行分组; "groupBy" 是一个 lodash 函数,否则你也可以使用 reduce 来分组。您可以查看以下答案:stackoverflow.com/questions/40774697/…
标签: reactjs jsx conditional-rendering