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
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列表中吗?不,两者都是独立的数组,这是必需的:)