Как будем определять, должен ли элемент массива остаться:
function mustStay(n) {
for (const m of arr2) {
if (m.content.insuranceType === n.value) {
return false;
}
}
return true;
}
// или
const mustStay = n => arr2.every(m => m.content.insuranceType !== n.value);
// или
const mustStay = function(n) {
return !this.has(n.value);
}.bind(new Set(arr2.map(n => n.content.insuranceType)));
Собираем новый массив:
const filteredArr1 = arr1.filter(mustStay);
Удаляем элементы исходного массива:
arr1.reduceRight((_, n, i, a) => mustStay(n) || a.splice(i, 1), null);
// или
arr1.splice(0, arr1.length, ...arr1.filter(mustStay));
// или
let numDeleted = 0;
for (const [ i, n ] of arr1.entries()) {
arr1[i - numDeleted] = n;
numDeleted += !mustStay(n);
}
arr1.length -= numDeleted;