当前位置: 首页 > 面试题库 >

我如何在Swift中检查两个数组是否包含相同的元素,而不管这些元素出现的顺序如何?

傅啸
2023-03-14
问题内容

假设有两个数组…

var array1 = ["a", "b", "c"]
var array2 = ["b", "c", "a"]

我希望这两个数组的比较结果为真,以下为…

var array1 = ["a", "b", "c"]
var array2 = ["b", "c", "a", "d"]

…是假的。如何在Swift中实现?我试图将两个数组都转换为集合,但是由于某些原因,Set()不断删除该数组包含的一些(通常重复的)对象。

任何帮助,将不胜感激。


问题答案:

斯威夫特3,4

extension Array where Element: Comparable {
    func containsSameElements(as other: [Element]) -> Bool {
        return self.count == other.count && self.sorted() == other.sorted()
    }
}

// usage
let a: [Int] = [1, 2, 3, 3, 3]
let b: [Int] = [1, 3, 3, 3, 2]
let c: [Int] = [1, 2, 2, 3, 3, 3]

print(a.containsSameElements(as: b)) // true
print(a.containsSameElements(as: c)) // false


 类似资料:
  • 如何检查两个数组(循环)是否具有相同顺序的相同元素。例如,让我们以数组[1,2,3,4]为例。 对于[2,3,4,1]、[3,4,1,2]、[4,1,2,3],测试应返回true,但对于[1,3,2,4]、[1,4,2,3]或[1,2,3,5]则不返回true。 我最初的方法是找到第一个匹配项——每个数组中一个相等的元素——并将这两个元素视为各自数组的初始元素,我逐个比较了数组的其余元素。 有没有

  • 的顺序将与为创建对象选择的顺序相同 允许重复的后续字符串组件并按顺序保留 未定义的行为(其他代码保证没有进入工厂) 在对象实例化之后,没有任何方法可以更改组件列表 我正在编写一个简单的测试,该测试从字符串列表创建并检查它是否可以通过返回相同的列表。我立即这样做,但这应该发生在一个现实的代码路径的远处。 这里是我的尝试: null null

  • 问题内容: 如何检查一个DOM元素是否是另一个DOM元素的子元素?有内置的方法吗?例如,类似: 要么 如果没有,那么有什么想法怎么做?它还需要跨浏览器。我还应该提到,孩子可以嵌套在父级以下的多个级别。 问题答案: 更新: 现在有一种本地方法可以实现此目的。。在评论中也提到了答案。 旧答案: 使用该属性应该可以。从跨浏览器的角度来看,它也是非常安全的。如果已知这种关系是一级的,则可以简单地检查一下:

  • 有没有什么简单的方法可以检查两个数组是否包含任何公共元素?这合适吗?数组包含类型char。 提前道谢!

  • 问题内容: 在Swift中,如何检查数组中是否存在元素?Xcode没有针对,,或的任何建议,并且快速搜索本书不会发现任何结果。知道如何检查吗?我知道有一种方法可以返回索引号,但是有没有一种方法可以返回像ruby一样的布尔值? 我需要的示例: 问题答案: 斯威夫特2、3、4、5: 是(用于元素序列的) 协议扩展方法 ,而不是早期版本中的全局方法。 备注: 该方法要求序列元素采用协议。 如果序列元素是

  • 在Swift中,如何检查数组中是否存在元素?Xcode没有关于、或的任何建议,并且在这本书中快速搜索没有任何结果。知道怎么查这个吗?我知道有一个方法返回索引号,但是有没有一个方法像Ruby的那样返回一个布尔值? 我需要的示例: