Arrays 从另一个数组中删除元素数组

Arrays 从另一个数组中删除元素数组,arrays,node.js,Arrays,Node.js,我有一个数组array1=[1,2,3,4,5,6]和另一个数组array2=[4,5] 目标是以最少的时间复杂度从array1中删除array2的元素 最后一个数组是[1,2,3,6] 我知道我们可以对每个元素都这样做 function remove(array, element) { return array.filter(e => e !== element); } let array1 = [1,2,3,4,5,6]; array2 = [4,5]; array2.for

我有一个数组
array1=[1,2,3,4,5,6]
和另一个数组
array2=[4,5]

目标是以最少的时间复杂度从
array1
中删除
array2
的元素

最后一个数组是
[1,2,3,6]

我知道我们可以对每个元素都这样做

function remove(array, element) {
    return array.filter(e => e !== element);
}

let array1 = [1,2,3,4,5,6];
array2 = [4,5];
array2.forEach(el => {
    array1 = remove(array1, el);
});

我如何使它更好?

我有两种解决方案供您选择:

var arr1 = [ 1, 2,3 ];
var arr2 = [1,2,4 ];
var result = arr1.filter(o1 => arr2.filter(o2 => o2 === o1).length === 0);
console.log(result);

或者您可以使用差分

我有两种解决方案:

var arr1 = [ 1, 2,3 ];
var arr2 = [1,2,4 ];
var result = arr1.filter(o1 => arr2.filter(o2 => o2 === o1).length === 0);
console.log(result);
或者您可以使用更简单、更干净的
const arr1=[1,2,3,4]
常数arr2=[3,4]
常量newArray=arr1.filter(x=>!arr2.includes(x))
console.log(newArray)
更简单更干净
const arr1=[1,2,3,4]
常数arr2=[3,4]
常量newArray=arr1.filter(x=>!arr2.includes(x))

log(newArray)
这是从学术角度来看的,还是作为工作的一部分,您必须解决的问题?如果你只是想在你的应用程序中使用这个功能,那么它有很多工具可以帮助你。这是一个几何上的缓慢过程,因为它需要M x N个过程。更快的解决方案包括对两个数组进行排序,以便对每个数组进行一次遍历,但如果顺序很重要,这不是一个有效的解决方案。这是出于学术目的,但目标是将其放入一个类并创建一个工具包。从学术角度来看,这是一个问题,还是您必须将其作为工作的一部分来解决?如果你只是想在你的应用程序中使用这个功能,那么它有很多工具可以帮助你。这是一个几何上的缓慢过程,因为它需要M x N个过程。更快的解决方案包括对两个数组进行排序,以便对每个数组进行一次遍历,但如果顺序很重要,这不是一个有效的解决方案。这是出于学术目的,但目标是将其编入一个类并创建一个工具包