Javascript 减少对象数组中一个键中具有相同值的对象

Javascript 减少对象数组中一个键中具有相同值的对象,javascript,Javascript,我有一个对象数组: let dates = [ { "surveyDate": "111111`", "selectable": true }, { "surveyDate": "222222", "selectable": true }, { "surveyDate": "111111", "selectable": false }, { "surveyDate": "333333", "selectable": false },

我有一个对象数组:

let dates = [
{
    "surveyDate": "111111`",
    "selectable": true
},
{
    "surveyDate": "222222",
    "selectable": true
},
{
    "surveyDate": "111111",
    "selectable": false
},
{
    "surveyDate": "333333",
    "selectable": false
},
{
    "surveyDate": "222222",
    "selectable": true
}
]
我想删除 { “调查日期”:“111111”, “可选”:false }

第二个呢 { “调查日期”:“2222222”, “可选”:真 }

因为数组中有另一个surveyDate=111111的对象,其可选值为true。有两个
{“surveyDate”:“2222222”,“可选”:true}
因此我需要删除第二个

基本上,此数组将具有唯一的surveyDates


我希望这足够清楚

您可以使用
地图
重建对象

let dates=[{surveyDate:“111111”,可选:true},{surveyDate:“222222”,可选:true},{surveyDate:“111111”,可选:false},{surveyDate:“333333”,可选:false},{surveyDate:“2222222”,可选:true},
结果=Array.from(
dates.reduce((m,{surveyDate,可选})=>
m、 设置(surveyDate,m.get(surveyDate)| |可选),新地图),
([surveyDate,可选])=>({surveyDate,可选})
);
控制台日志(结果)

.as console wrapper{max height:100%!important;top:0;}
您可以使用字典来存储日期和可选日期。我注意到,如果日期有重复项,您希望删除该日期,而当可选值等于false时,您更希望删除该重复项。最后将字典转换为数组

function removeDuplicates(dates) {
  distinctDates = {};

  for ({ surveyDate, selectable } of dates) {
    // If surveyDate doesn't exist add it, else keep the selectable true if was ever true
    if (!distinctDates.hasOwnProperty(surveyDate)) 
      distinctDates[surveyDate] = selectable;
    else distinctDates[surveyDate] = distinctDates[surveyDate] || selectable;
  }

 // convert key/value to array and return
  return Object.entries(distinctDates).map(([surveyDate, selectable]) => ({
    surveyDate,
    selectable,
  }));
}

我相信你的数组中有一个类型。第一个surveyDate的末尾有一个倒勾。

数组是否已排序?什么不适用于您的代码?