Tengo 2 matrices y filtraré pero duplicaré la clave.
const arr1 = [1, 2, 3, 3, 3, 4]; const arr2 = [1, 3]; function filteredArray(arr1, arr2) {...} const newArr = filteredArray(arr1, arr2); console.log(newArr); // result: [2, 3, 3, 4];Puede verificar la implementación a continuación. No debemos modificar los datos originales también, es por eso que he clonado su matriz para la modificación de la matriz en lugar de cambiar elementos en la original.
const arr1 = [1, 2, 3, 3, 3, 4]; const arr2 = [1, 3]; function filteredArray(arr1, arr2) { const newArr1 = [...arr1] //clone the array to keep the original array data const set2 = new Set(arr2) for(let i = 0; i < newArr1.length; i++) { if(set2.has(newArr1[i])) { set2.delete(newArr1[i]) newArr1.splice(i,1) } } return newArr1 } const newArr = filteredArray(arr1, arr2); console.log(newArr);Usar set y filter
function filteredArray(arr1, arr2) { const set = new Set(arr2); return arr1.filter(item => !set.delete(item)); } const arr1 = [1, 2, 3, 3, 3, 4]; const arr2 = [1, 3]; console.log(filteredArray(arr1, arr2));