【发布时间】:2021-08-11 07:45:33
【问题描述】:
我正在尝试归结一组包含有关报纸文章的不同信息的对象。我想要的是一个总结每个新闻来源信息的字符串。
每个对象都包含属性 medium、pageNumber 和 day。媒体总是有一个字符串值,但 pageNumber 和 day 属性可以是字符串或 null。
示例 1:day 属性为空的情况
[
{ medium: "The New York Times", pageNumber: "6", day: null },
{ medium: "The New York Times", pageNumber: "12", day: null },
{ medium: "The Wall Street Journal", pageNumber: "6", day: null },
{ medium: "USA Today", pageNumber: "15", day: null },
{ medium: "USA Today", pageNumber: "8", day: null },
{ medium: "USA Today", pageNumber: "32", day: null },
{ medium: "Daily Mail", pageNumber: "12", day: null },
{ medium: "Huffington Post", pageNumber: null, day: null }
]
想要的输出:
"The New York Times, page 6, 12; The Wall Street Journal, page 6; USA Today, page 8, 15, 32; Daily Mail, page 12; Huffington Post"
示例 2:day 属性有值的地方
[
{ medium: "The New York Times", pageNumber: "6", day: "saturday" },
{ medium: "The New York Times", pageNumber: "12", day: "monday" },
{ medium: "The Wall Street Journal", pageNumber: "6", day: "sunday" },
{ medium: "USA Today", pageNumber: "15", day: "monday" },
{ medium: "USA Today", pageNumber: "8", day: "monday" },
{ medium: "USA Today", pageNumber: "32", day: "saturday" },
{ medium: "Daily Mail", pageNumber: "12", day: "sunday" },
{ medium: "Huffington Post", pageNumber: null, day: "sunday" }
]
想要的输出:
"The New York Times, saturday, page 6, monday, page 12; The Wall Street Journal, monday, page 6; USA Today, saturday, page 32; monday, page 8, 15; Daily Mail, sunday, page 12; Huffington Post, monday"
请注意,如果媒体不是实体的(如果它不是真正的实体报纸而是没有页码的网络媒体),pageNumber 属性值将为空。在这种情况下,它应该被省略。另请注意,如果一种媒体有多个页码,则应按从低到高排序。
输出应该是一个字符串。每个媒体在输出中只应表示一次。
我希望这一切都有意义.. 几天来我一直在努力解决这个问题,但我就是找不到解决问题的方法。
【问题讨论】:
-
这是一个分组问题:您想按 medium 对结果进行分组。因此,只需使用媒体名称和整理的日期和页码值构建一个对象,然后最后将其转换为所需格式的字符串。 Array.prototype.reduce 可能是一个很好的起点。
标签: javascript arrays sorting object