假设有两个数组。
var array1 = ["a", "b", "c"]
var array2 = ["b", "c", "a"]
我希望这两个数组的比较结果是真的,并且如下所示…
var array1 = ["a", "b", "c"]
var array2 = ["b", "c", "a", "d"]
...to为false。我如何在Swift中实现这一点?我试图将两个数组都转换为Set,但由于某种原因,Set()一直在删除数组中包含的一些(通常是重复的)对象。
任何帮助都将不胜感激。
发布于 2016-04-19 17:48:23
你可以这样做:
array1.sortInPlace()
array2.sortInPlace()
print(array1,array2)
if array1 == array2 {
print("equal")
} else {
print("not equal")
}
如果不想更改原始数组,我们可以这样做
let sorted1 = array1.sort()
let sorted2 = array2.sort()
if sorted1 == sorted2 {
print("equal")
}else {
print("not equal")
}
发布于 2019-08-08 00:57:23
使用Set
let array1 = ["a", "b", "c"]
let array2 = ["b", "c", "a", "c"]
let set1 = Set(array1)
let set2 = Set(array2)
if (set1.count == set2.count && set1 == set2) { //if you compare big sets it is recommended to compare the count of items in the sets beforehand
//they are identical
}
Set
实现了Hashable
,因此任务是实现散列函数以使用Set
发布于 2016-04-19 17:52:47
创建函数来比较它们:
func containSameElements(var firstArray firstArray: [String], var secondArray: [String]) -> Bool {
if firstArray.count != secondArray.count {
return false
} else {
firstArray.sortInPlace()
secondArray.sortInPlace()
return firstArray == secondArray
}
}
然后:
var array1 = ["a", "a", "b"]
var array2 = ["a", "b", "a"]
var array3 = ["a", "b", "c"]
var array4 = ["b", "c", "a", "d"]
print(containSameElements(firstArray: array1, secondArray: array2)) //true
print(containSameElements(firstArray: array3, secondArray: array4)) //false
print(array1) //["a", "a", "b"]
print(array2) //["a", "b", "a"]
print(array3) //["a", "b", "c"]
print(array4) //["b", "c", "a", "d"]
https://stackoverflow.com/questions/36714522
复制相似问题