迭代数组的元素然后平均

时间:2014-04-08 21:22:33

标签: objective-c arrays

我在Objective-C中有一个存储基本里程数据的数组。因此,每次添加到数组时,我都会添加4个元素(英里,升,成本,MPG)。如果我保存了10个条目,我最终会得到10个元素,比如费用。如何遍历特定元素,为它们分配索引,将它们全部添加(总计)然后除以总索引数? 我发现很多信息循环通过只包含数字和执行平均值的基本数组,但我似乎无法将其缩小到特定元素?我应该只使用我需要的数据创建一个新数组,然后平均该数据,还是可以直接在主数组上工作,这会更容易?

如果仅使用我的成本数据填充它,它将适用于平面阵列,它将循环并打印到控制台

for (NSString* string in arrayOfStrings ){
NSLog(@"%@", string);
}

那么我将如何深入研究这个阵列说并实现同样的事情来寻找我特定的成本要素。我想我可以从那里开始工作?

arrayOfStrings.cost

2 个答案:

答案 0 :(得分:1)

如果您创建一个具有成本属性的类:

@interface MYCostObject : NSObject

@property double cost;

@end

您可能认为可以循环遍历MYCostObjects的集合:

MYCostObject* foo = [[MYCostObject alloc] init];
MYCostObject* bar = [foo copy];
foo.cost = 10.0;
bar.cost = 2.0;
NSArray* myArray = @[foo, bar];

double sum = 0.0;
for (MYCostObject* costObj in myArray)
{
    sum += costObj.cost;
}
double avg = sum/myArray.count;

但您也可以在循环中跳过枚举并使用collection operator

NSNumber* avg = [myArray valueForKeyPath:@"@avg.cost"];

答案 1 :(得分:0)

你应该发布一些代码,因为我不清楚你做了什么 。数组中的元素只有一个索引,而不是一个名称。您可能需要一组NSDictionaries。然后做一些事情:

int sum = 0;
int count = 0;
for(NSDictionary *entry in myArray) {
    NSNumber cost = [entry valueForKey:@"cost"];
    if(cost) {
        sum += [cost intValue];
        count++;
    }
}
int costAvg = sum / count;