Javascript 按其他数组的索引筛选数组的对象

Javascript 按其他数组的索引筛选数组的对象,javascript,arrays,typescript,array-filter,Javascript,Arrays,Typescript,Array Filter,我有一个场景,用户可以多选择项并删除它们,因此我有两个数组: 带有复选框值(选中并索引) 需要根据检查值索引进行筛选的实际项目 下面是使用lodash的两个数组和预期结果 const checked = [ { index: 0, checked: false }, { index: 1, checked: true //note second index is checked so we need to filter out second index

我有一个场景,用户可以多选择项并删除它们,因此我有两个数组:

  • 带有复选框值(选中并索引)
  • 需要根据检查值索引进行筛选的实际项目
  • 下面是使用lodash的两个数组和预期结果

    const checked = [
      {
        index: 0,
        checked: false
      },
      {
        index: 1,
        checked: true //note second index is checked so we need to filter out second index from items array.
      },
    ];
    
    const items = [
      {
        title: 'This is title 1',
        description: 'This is description 1',
        end_date: '2018-03-12 14:00:00',
        location: '3577 Rue de Bullion, Montréal, QC H2X 3A1, Canada',
        room: 401,
        start_date: '2018-03-12 13:00:00',
      },
      {
        title: 'This is title 2',
        description: 'This is description 2',
        end_date: '2018-03-12 14:00:00',
        location: '3577 Rue de Bullion, Montréal, QC H2X 3A1, Canada',
        room: 401,
        start_date: '2018-03-12 13:00:00',
      }
    ];
    
    
    const result = [
      {
        title: 'This is title 1',
        description: 'This is description 1',
        end_date: '2018-03-12 14:00:00',
        location: '3577 Rue de Bullion, Montréal, QC H2X 3A1, Canada',
        room: 401,
        start_date: '2018-03-12 13:00:00',
      }
    ];
    

    您只需使用
    filter
    函数即可获得当前对象的索引。然后使用此索引访问选中数组的
    n-th
    项(我提供此解决方案是因为从
    checked
    数组可以看到您的数组包含所有复选框的状态-选中和未选中),并检查其
    checked
    属性

    const checked=[
    {索引:0,选中:false},
    {索引:1,选中:true}
    ];
    常数项=[
    {
    标题:“这是标题1”,
    description:'这是description 1',
    结束日期:“2018-03-12 14:00:00”,
    地点:加拿大QC H2X 3A1蒙特勒尔市布利恩街3577号,
    房间:401,
    开始日期:“2018-03-12 13:00:00”,
    },
    {
    标题:“这是标题2”,
    description:'这是description 2',
    结束日期:“2018-03-12 14:00:00”,
    地点:加拿大QC H2X 3A1蒙特勒尔市布利恩街3577号,
    房间:401,
    开始日期:“2018-03-12 13:00:00”,
    }
    ];
    const filtered=items.filter((item,index)=>!checked[index].checked);
    
    console.log(过滤)您可以简单地执行此操作

    var result=[];
    checked.forEach(function (item) {
        if(item.checked)
        {
            result.push(items[item.index]);
        }
    })
    
    console.log(result);
    

    完美的但是有一个问题,如果我们选择全部并删除,它可以正常工作,但是当我们选择任何单个项目并删除它时,下一个项目自动检查,我想它返回的检查值是真的。你能澄清一点吗?在列表中,当我们选择一个项目并删除它时,它会从列表中删除该项目,但它也会将该删除项目的下一个项目标记为选中,另外,如果我们选择两个要删除的项目,然后将其标记为选中的下两个项目,我想我们也需要筛选出选中的数组,这样它就不会检查其他剩余的项目,或者在项目筛选后,我们可以返回checked false。嘿,谢谢,但这也有效
    const checked=[]
    筛选项目后,为什么有两个单独的阵列?不能将checked属性添加到items列表中吗?不,两者都是独立的数组,这是必需的:)