Не самый эффективный, но вот быстрое и грязное решение с reduce
и map
:
const input = [
[0,1,2,3,4,5],
[0,1,2,3,4,5],
[0,1,2,3,4,5]
];
const removals = [[0,1], [1,1], [2,4], [0,2]];
const _ = {};
const output = removals
.reduce((a, [x, y]) => (a[x][y] = _, a), input)
.map(r => r.filter(c => c !== _));
output.forEach(r => console.log(...r));
Я решаю проблему смещения индексов, просто помечая ячейки для удаления с помощью заполнителя (_
) в одном цикле и возвращаясь в другом цикле.чтобы удалить все отмеченные ячейки.
Другое решение было бы sort
индексами, которые будут удалены перед циклом их прохождения, и тогда вы можете просто splice
как обычно.
const input = [
[0,1,2,3,4,5],
[0,1,2,3,4,5],
[0,1,2,3,4,5]
];
const removals = [[0,1], [1,1], [2,4], [0,2]];
const output = removals
.sort(([a, b], [c, d]) => d - b)
.reduce((a, [x, y]) => (a[x].splice(y, 1), a), input);
output.forEach(r => console.log(...r));