У меня есть сценарий, в котором пользователь может выбирать элементы и удалять их, поэтому у меня есть два массива:
- Со значениями флажков (отмечены и индексированы)
- Фактические элементы, которые необходимо фильтровать на основе индекса проверенных значений.
Вот два массива и ожидаемый результат с использованием 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',
}
];
2 ответа
Вам нужно просто использовать функцию filter
и получить индекс текущего объекта. Затем, используя этот индекс, перейдите к элементу n-th
массива checked (я привожу это решение, потому что из массива checked
видно, что ваш массив содержит состояния для всех флажков - отмечено и не отмечен) и проверьте его свойство checked
.
const checked = [
{ index: 0, checked: false },
{ index: 1, checked: true }
];
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 filtered = items.filter((item, index) => !checked[index].checked);
console.log(filtered);
Вы можете просто сделать это.
var result=[];
checked.forEach(function (item) {
if(item.checked)
{
result.push(items[item.index]);
}
})
console.log(result);
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.