Javascript 按子数组键值从数组中删除对象

Javascript 按子数组键值从数组中删除对象,javascript,arrays,Javascript,Arrays,我有一个对象数组: 我想删除对象,该对象在excluded_dates数组中有一个特定的日期(2020-09-24),以如下方式输出新数组: outcome = [ { title: '"test1"', excluded_dates: false, }, { title: '"test2"', excluded_dates: [ { excluded_date:

我有一个对象数组:

我想删除对象,该对象在excluded_dates数组中有一个特定的日期(2020-09-24),以如下方式输出新数组:

  outcome = [
    {
      title: '"test1"',
      excluded_dates: false,
    },
    {
      title: '"test2"',
      excluded_dates: [
        { excluded_date: "2020-09-12" },
        {
          excluded_date: "2020-09-17",
        },
      ],
    }
   ];
为此,我考虑使用双重过滤。我还尝试了一些(),但这是针对数组的,而不是对象数组

const数据=[
{
标题:“‘测试1’”,
排除日期:false,
},
{
标题:“‘测试2’”,
排除日期:[
{排除日期:“2020-09-12”},
{
排除日期:“2020-09-17”,
},
],
},
{
标题:“‘测试3’”,
排除日期:[
{
排除日期:“2020-09-16”,
},
{
排除日期:“2020-09-24”,
},
],
},
];
const outcome=data.filter(函数(事件){
if(事件排除日期){
return event.excluded_dates.filter(
(日期)=>date.excluded_日期===“2020-09-24”
);
}
});

控制台日志(结果)
如果对象没有
excluded\u dates
属性,请确保返回
true
。此外,由于您只寻找一个日期,因此可以将第二次使用替换为

const output=data.filter((事件)=>{
回来(
event.excluded_dates&&//如果没有“excluded_dates”属性,则返回“true”`
event.excluded_dates.some(//否则,尝试查找日期。如果找到,则返回'false'`
({排除日期})=>排除日期===“2020-09-24”
)
);
});

代码段示例:

const数据=[{
标题:“‘测试1’”,
排除日期:false,
},
{
标题:“‘测试2’”,
排除日期:[{
排除日期:“2020-09-12”
},
{
排除日期:“2020-09-17”,
},
],
},
{
标题:“‘测试3’”,
排除日期:[{
排除日期:“2020-09-16”,
},
{
排除日期:“2020-09-24”,
},
],
},
];
常量结果=数据过滤器((事件)=>{
回来(
event.u日期&&
event.excluded_dates.some(
({排除日期})=>排除日期===“2020-09-24”
)
);
});

控制台日志(结果)
如果对象没有
excluded\u dates
属性,请确保返回
true
。此外,由于您只寻找一个日期,因此可以将第二次使用替换为

const output=data.filter((事件)=>{
回来(
event.excluded_dates&&//如果没有“excluded_dates”属性,则返回“true”`
event.excluded_dates.some(//否则,尝试查找日期。如果找到,则返回'false'`
({排除日期})=>排除日期===“2020-09-24”
)
);
});

代码段示例:

const数据=[{
标题:“‘测试1’”,
排除日期:false,
},
{
标题:“‘测试2’”,
排除日期:[{
排除日期:“2020-09-12”
},
{
排除日期:“2020-09-17”,
},
],
},
{
标题:“‘测试3’”,
排除日期:[{
排除日期:“2020-09-16”,
},
{
排除日期:“2020-09-24”,
},
],
},
];
常量结果=数据过滤器((事件)=>{
回来(
event.u日期&&
event.excluded_dates.some(
({排除日期})=>排除日期===“2020-09-24”
)
);
});

控制台日志(结果)我会使用
过滤器

let数据=[
{索引:0,排除:['Monday']},
{索引:1,排除:['星期二','星期四]},
{索引:2,排除:['星期三]},
];
data=data.filter(el=>!el.exclude.includes(‘星期二’);
控制台日志(数据);

//数据={index:0,exclude:['Monday']},{data:2,exclude:['Monday']}
我将使用
过滤器

let数据=[
{索引:0,排除:['Monday']},
{索引:1,排除:['星期二','星期四]},
{索引:2,排除:['星期三]},
];
data=data.filter(el=>!el.exclude.includes(‘星期二’);
控制台日志(数据);

//data={index:0,exclude:['Monday']},{data:2,exclude:['周三']}
如果事件没有
excluded\u dates
属性,则返回
true
,因为您希望在每个场景中保留这些日期

使用该方法检查
排除日期
数组中的每个
排除日期
是否不等于
“2020-09-24”
,如果每个回调的计算结果为真或假,则返回true或false

const数据=[{
标题:“‘测试1’”,
排除日期:false,
},
{
标题:“‘测试2’”,
排除日期:[{
排除日期:“2020-09-12”
},
{
排除日期:“2020-09-17”,
},
],
},
{
标题:“‘测试3’”,
排除日期:[{
排除日期:“2020-09-16”,
},
{
排除日期:“2020-09-24”,
},
],
},
];
const outcome=data.filter(函数(事件){
if(事件排除日期){
返回event.excluded_dates.every(
(日期)=>date.excluded_date!==“2020-09-24”
);
}
返回true;
});

控制台日志(结果)
如果事件没有
excluded\u dates
属性,则返回
true
,因为您希望在每个场景中保留这些日期

使用该方法检查
排除日期
数组中的每个
排除日期
是否不等于
“2020-09-24”
,如果每个回调的计算结果为真或假,则返回true或false

const数据=[{
标题:“‘测试1’”,
排除日期:false,
},
{
标题:“‘测试2’”,
排除日期:[{
排除日期:“2020-09-12”
},
{
排除日期:“2020-09-17”,
},
],
},
{
标题:“‘测试3’”,
排除日期:[{
排除日期:“2020-09-16”,
},