我有两个数组
var Status: [Int] = [0,1,0,1,1] //which will contain at random a 0 or 1 at all five index
var Total: [Int] = [0,85,90,90,0] //which will contain any positive Int at all five index
我想写一个func,它将扫描Status
并仅返回包含1
的索引。
然后在这些相同的索引上扫描Total
以查看Int
s是否相等
在这种情况下,索引1,3,4将从Status
扫描返回,Total
将在[1,3,4]扫描返回85,90,0。
如果我能提出正确的语法
,那就是这样的var Status: [Int] = [0,1,1,1,1]
var Total: [Int] = [3,4,16,2,3]
var IndexesToCompare: [Int] = [Int]()
Status.scan for value '1', return indexes to IndexesToCompare
var TotalsToCompare: [Int] = [Int]()
Total.scan @Index[IndexesToCompare], return values to TotalsToCompare
if TotalsToCompare.scanIfAllIntegarsAreEqual == true {println("EQUAL")} else {println("Unequal")}
这将打印出" Unequal",但如果Status
更改为[1,0,0,0,1],它将打印出来&#34; EQUAL&#34; < / p>
答案 0 :(得分:1)
如果我明白你想要什么。你想看看Status
并找到所有的1,并在那里得到相应的总值。然后使用这些值找到平均值,然后将其与每个单独的值进行比较。如果所有值都等于平均值,则返回true,否则返回false。我假设该函数可以访问Status和Total,并且它们的大小相同。如果所有值都相同则返回true,否则返回false。
func yourFunc()->Bool{
var values = [Int]()
for index in 0..<Status.count{//loop through Status
if Status[index] == 1{//when you find a 1
//append it's corresponding value in Total to values
values.append(Total[index])
}
}
var average = values.reduce(0,+)/values.count
for value in values{
if value != average{
return false
}
}
return true
}
注意:我个人只喜欢将类而非变量大写为约定。