【发布时间】:2021-03-02 12:01:13
【问题描述】:
基于“Platform”和“Title”,我需要对以下对象进行去重,得到最早的“DateFirstSeen”和最新的“DateLastSeen”。
输入对象:
[
{
"Platform": "Disney",
"DateFirstSeen": {
"Day": "15",
"Month": "06",
"Year": "2019"
},
"DateLastSeen": {
"Day": "08",
"Month": "02",
"Year": "2021"
},
"Title": "Jojo Rabbit"
},
{
"Platform": "Netflix",
"DateFirstSeen": {
"Month": "08",
"Year": "2014"
},
"DateLastSeen": {
"Month": "11",
"Year": "2020"
},
"Title": "Stranger Things"
},
{
"Platform": "Netflix",
"DateFirstSeen": {
"Day": "20",
"Month": "08",
"Year": "2014"
},
"DateLastSeen": {
"Day": "02",
"Month": "03",
"Year": "2020"
},
"Title": "Stranger Things"
},
{
"Platform": "Netflix",
"DateFirstSeen": {
"Month": "08",
"Year": "2014"
},
"DateLastSeen": {
"Month": "10",
"Year": "2017"
},
"Title": "Stranger Things"
},
{
"Platform": "Netflix",
"DateFirstSeen": {
"Month": "12",
"Year": "2012"
},
"DateLastSeen": {
"Day": "05",
"Month": "01",
"Year": "2017"
},
"Title": "Stranger Things"
},
{
"Platform": "Hulu",
"DateFirstSeen": {
"Month": "05",
"Year": "2010"
},
"DateLastSeen": {
"Month": "12",
"Year": "2016"
},
"Title": "Watchmen"
},
{
"Platform": "Netflix",
"DateFirstSeen": {
"Day": "03",
"Month": "04",
"Year": "2015"
},
"DateLastSeen": {
"Day": "03",
"Month": "04",
"Year": "2015"
},
"Title": "Stranger Things"
},
{
"Platform": "AppleTV",
"DateFirstSeen": {
"Day": "20",
"Month": "07",
"Year": "2005"
},
"DateLastSeen": {
"Month": "12",
"Year": "2012"
},
"Title": "See"
},
{
"Platform": "Hulu",
"DateFirstSeen": {
"Month": "01",
"Year": "2012"
},
"DateLastSeen": {
"Month": "01",
"Year": "2012"
},
"Title": "Watchmen"
},
{
"Platform": "AppleTV",
"DateFirstSeen": {
"Month": "09",
"Year": "2003"
},
"DateLastSeen": {
"Month": "02",
"Year": "2009"
},
"Title": "Snoopy Show"
},
{
"Platform": "AppleTV",
"DateFirstSeen": {
"Day": "01",
"Month": "11",
"Year": "2008"
},
"DateLastSeen": {
"Day": "03",
"Month": "12",
"Year": "2008"
},
"Title": "See"
},
{
"Platform": "AppleTV",
"DateFirstSeen": {
"Month": "09",
"Year": "2008"
},
"DateLastSeen": {
"Month": "09",
"Year": "2008"
},
"Title": "See"
},
{
"Platform": "AppleTV",
"DateFirstSeen": {
"Month": "06",
"Year": "1999"
},
"DateLastSeen": {
"Day": "31",
"Month": "08",
"Year": "2006"
},
"Title": "Snoopy Show"
},
{
"Platform": "AppleTV",
"DateFirstSeen": {
"Day": "12",
"Month": "08",
"Year": "2006"
},
"DateLastSeen": {
"Day": "12",
"Month": "08",
"Year": "2006"
},
"Title": "See"
},
{
"Platform": "AppleTV",
"DateFirstSeen": {
"Day": "18",
"Month": "06",
"Year": "2006"
},
"DateLastSeen": {
"Day": "18",
"Month": "06",
"Year": "2006"
},
"Title": "See"
},
{
"Platform": "AppleTV",
"DateFirstSeen": {
"Month": "08",
"Year": "2005"
},
"DateLastSeen": {
"Month": "08",
"Year": "2005"
},
"Title": "See"
},
{
"Platform": "AppleTV",
"DateFirstSeen": {
"Day": "20",
"Month": "07",
"Year": "2005"
},
"DateLastSeen": {
"Day": "20",
"Month": "07",
"Year": "2005"
},
"Title": "See"
}
]
想要的输出是:
[
{
"Platform": "Disney",
"DateFirstSeen": {
"Day": "15",
"Month": "06",
"Year": "2019"
},
"DateLastSeen": {
"Day": "08",
"Month": "02",
"Year": "2021"
},
"Title": "Jojo Rabbit"
},
{
"Platform": "Netflix",
"DateFirstSeen": {
"Month": "12",
"Year": "2012"
},
"DateLastSeen": {
"Month": "11",
"Year": "2020"
},
"Title": "Stranger Things"
},
{
"Platform": "Hulu",
"DateFirstSeen": {
"Month": "05",
"Year": "2010"
},
"DateLastSeen": {
"Month": "12",
"Year": "2016"
},
"Title": "Watchmen"
},
{
"Platform": "AppleTV",
"DateFirstSeen": {
"Day": "20",
"Month": "07",
"Year": "2005"
},
"DateLastSeen": {
"Month": "12",
"Year": "2012"
},
"Title": "See"
},
{
"Platform": "AppleTV",
"DateFirstSeen": {
"Month": "06",
"Year": "1999"
},
"DateLastSeen": {
"Month": "02",
"Year": "2009"
},
"Title": "Snoopy Show"
}
]
我曾尝试使用下划线来获取所有唯一对象_.uniq,但这只会给我平台和标题的唯一值,但错过了 DateFirstSeen 和 DateLastSeen。
我想确保这些字段在过滤过程中不会丢失。
【问题讨论】:
-
在js中可以使用Array.filter进行过滤,然后Array.sort根据日期,然后Array.reduce得到最小值或最大值(或者取排序后数组的第一个值)跨度>
-
如果您根据
_.uniq显示您的(非工作)代码会有所帮助;展示您的研究成果,以便在此基础上提供答案。
标签: javascript arrays lodash underscore.js