scan Array for condition,返回索引以扫描所述索引处的Array2值

时间:2015-03-23 23:02:22

标签: ios swift

我有两个数组

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")}

这将打印出&#34; Unequal&#34;,但如果Status更改为[1,0,0,0,1],它将打印出来&#34; EQUAL&#34; < / p>

1 个答案:

答案 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
}

注意:我个人只喜欢将类而非变量大写为约定。