我有两个数组,我想检查 arr2
中的每个元素是否都在 arr1
中。如果元素的值在 arr2
中重复,则它需要在 arr1
中重复相同的次数。这样做的最佳方法是什么?
arr1 = [1, 2, 3, 4]
arr2 = [1, 2]
checkSuperbag(arr1, arr2)
> true //both 1 and 2 are in arr1
arr1 = [1, 2, 3, 4]
arr2 = [1, 2, 5]
checkSuperbag(arr1, arr2)
> false //5 is not in arr1
arr1 = [1, 2, 3]
arr2 = [1, 2, 3, 3]
checkSuperbag(arr1, arr2)
> false //3 is not in arr1 twice
你必须支持糟糕的浏览器吗?如果没有, every 函数应该让这变得简单。
如果 arr1 是 arr2 的超集,则 arr2 中的每个成员都必须存在于 arr1
这是一个 fiddle
编辑
因此,您正在定义超集,以便对于 arr2 中的每个元素,它在 arr1 中出现的次数相同?我认为 filter 将帮助您做到这一点(从前面的 MDN 链接中获取 shim 以支持旧浏览器):
Updated Fiddle
结束编辑
如果您确实想支持较旧的浏览器,上面的 MDN 链接有一个您可以添加的 shim,为了您的方便,我在这里复制它:
编辑
请注意,这将是一个 O(N2) 算法,因此请避免在大型数组上运行它。