Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中创建唯一数组_Javascript_Node.js_Arrays - Fatal编程技术网

如何在javascript中创建唯一数组

如何在javascript中创建唯一数组,javascript,node.js,arrays,Javascript,Node.js,Arrays,我有一个对象数组 我需要得到一个具有唯一网站名称和最新日期的数组 样本数据 "data" : [ { "position" : 2, "website" : "abc.com", "owned" : false, "date" : "2020-05-06", "dateTime" : ISODate("2020-05-06T00:00:00.000Z") }, { "position" : 3, "website" : "qwe.com

我有一个对象数组

我需要得到一个具有唯一网站名称和最新日期的数组

样本数据

"data" : [ 
{
    "position" : 2,
    "website" : "abc.com",
    "owned" : false,
    "date" : "2020-05-06",
    "dateTime" : ISODate("2020-05-06T00:00:00.000Z")
}, 
{
    "position" : 3,
    "website" : "qwe.com",
    "owned" : false,
    "date" : "2020-05-06",
    "dateTime" : ISODate("2020-05-06T00:00:00.000Z")
}, 
{
    "position" : 1,
    "website" : "qwe.com",
    "owned" : false,
    "date" : "2020-04-06",
    "dateTime" : ISODate("2020-04-06T00:00:00.000Z")
}, 
{
    "position" : 6,
    "website" : "xyz.agency",
    "owned" : false,
    "date" : "2020-05-06",
    "dateTime" : ISODate("2020-05-06T00:00:00.000Z")
}, 
{
    "position" : 4,
    "website" : "opq.com",
    "owned" : true,
    "date" : "2020-05-06",
    "dateTime" : ISODate("2020-05-06T00:00:00.000Z")
}, 
{
    "position" : 2,
    "website" : "opq.com",
    "owned" : true,
    "date" : "2020-05-06",
    "dateTime" : ISODate("2020-05-06T00:00:00.000Z")
},
{
    "position" : 4,
    "website" : "opq.com",
    "owned" : true,
    "date" : "2020-04-01",
    "dateTime" : ISODate("2020-04-01T00:00:00.000Z")
}
]
基于日期时间、位置和网站。需要MongoDB查询或Javascript代码

(日期时间和网站都可以,但位置太难了) (提取具有最高日期和唯一网站名且排名靠前的对象)

预期反应

 "data" : [ 
{
    "position" : 2,
    "website" : "abc.com",
    "owned" : false,
    "date" : "2020-05-06",
    "dateTime" : ISODate("2020-05-06T00:00:00.000Z")
}, 
{
    "position" : 3,
    "website" : "qwe.com",
    "owned" : false,
    "date" : "2020-05-06",
    "dateTime" : ISODate("2020-05-06T00:00:00.000Z")
}, 
{
    "position" : 6,
    "website" : "xyz.agency",
    "owned" : false,
    "date" : "2020-05-06",
    "dateTime" : ISODate("2020-05-06T00:00:00.000Z")
}, 
{
    "position" : 2,
    "website" : "opq.com",
    "owned" : true,
    "date" : "2020-05-06",
    "dateTime" : ISODate("2020-05-06T00:00:00.000Z")
}

],

如果要从JS级别执行(警告!性能低下):

var maxDate={};//用于存储网站最新日期的临时变量
var网站=数据
.map(条目=>{
if((maxDate[entry.website]| | 0){
返回maxDate[entry.website]==entry.dateTime.getTime();
});

如果您想使用mongodb查询实现这一点:

使用下面的实用程序,您可以用javascript实现所需的输出。希望这会有所帮助

const getUniqueWebsites=data=>{
返回数据。减少((结果,d)=>{
如果(结果[d.网站]){
if(新日期(结果[d.website].dateTime).getTime()<新日期(d.dateTime).getTime()){
结果[d.网站]=d;
}
else if(新日期(结果[d.website].dateTime).getTime()==新日期(d.dateTime).getTime()&&
(结果[d.website].position)>d.position){
结果[d.网站]=d;
}
}否则{
结果[d.网站]=d;
}
返回结果;
},{})
}
让数据=[
{
"立场":二,,
“网站”:“abc.com”,
“拥有”:假,
“日期”:“2020-05-06”,
“日期时间”:“2020-05-06T00:00:00.000Z”
},
{
“立场”:3,
“网站”:“qwe.com”,
“拥有”:假,
“日期”:“2020-05-06”,
“日期时间”:“2020-05-06T00:00:00.000Z”
},
{
"立场":一,,
“网站”:“qwe.com”,
“拥有”:假,
“日期”:“2020-04-06”,
“日期时间”:“2020-04-06T00:00:00.000Z”
},
{
“立场”:6,
“网站”:“xyz.agency”,
“拥有”:假,
“日期”:“2020-05-06”,
“日期时间”:“2020-05-06T00:00:00.000Z”
},
{
“立场”:4,
“网站”:“opq.com”,
“拥有”:没错,
“日期”:“2020-05-06”,
“日期时间”:“2020-05-06T00:00:00.000Z”
},
{
"立场":二,,
“网站”:“opq.com”,
“拥有”:没错,
“日期”:“2020-05-06”,
“日期时间”:“2020-05-06T00:00:00.000Z”
},
{
“立场”:4,
“网站”:“opq.com”,
“拥有”:没错,
“日期”:“2020-04-01”,
“日期时间”:“2020-04-01T00:00:00.000Z”
}
]
让结果=getUniqueWebsites(数据)
console.log(Object.values(result))