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的末尾有一个倒勾。数组是否已排序?什么不适用于您的代码?