Objective c 遍历数组的元素,然后求平均值
我在Objective-C中有一个存储基本里程数据的数组。所以每次我添加到数组中,我都会添加4个元素(英里、升、成本、英里)。如果我保存10个条目,我最终会得到10个元素,比如说成本。我如何迭代一个特定的元素,给它们分配一个索引,将它们全部相加,然后除以总索引号?? 我发现大量的信息在基本数组中循环,这些数组只包含数字并执行平均值,但我似乎无法将其缩小到特定的元素?我应该用我需要的数据创建一个新的数组,然后平均这些数据,还是可以直接在主数组上工作,这样会更容易些 这只适用于平面阵列,如果它只填充了我的成本数据,它将循环并打印到控制台Objective c 遍历数组的元素,然后求平均值,objective-c,arrays,Objective C,Arrays,我在Objective-C中有一个存储基本里程数据的数组。所以每次我添加到数组中,我都会添加4个元素(英里、升、成本、英里)。如果我保存10个条目,我最终会得到10个元素,比如说成本。我如何迭代一个特定的元素,给它们分配一个索引,将它们全部相加,然后除以总索引号?? 我发现大量的信息在基本数组中循环,这些数组只包含数字并执行平均值,但我似乎无法将其缩小到特定的元素?我应该用我需要的数据创建一个新的数组,然后平均这些数据,还是可以直接在主数组上工作,这样会更容易些 这只适用于平面阵列,如果它只填充
for (NSString* string in arrayOfStrings ){
NSLog(@"%@", string);
}
那么,我将如何深入到这个数组中,比如说,寻找我的特定成本元素,实现相同的目标呢。我想我可以从那里开始工作
arrayOfStrings.cost
你应该发布一些代码,因为我不清楚你做了什么数组。数组中的元素只有索引,而没有名称。您可能需要一组NSD字典。然后做一些类似的事情:
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;
如果创建具有成本特性的类:
@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;
但您也可以跳过循环中的枚举并使用:
我想你刚刚启发了我。你可以想象,我把太多精力放在了阵列上,而忘记了我想做什么。我将尝试你的回答,因为它是有意义的。看起来就像我想要的,你已经从数组中填充了一个字典,然后搜索循环的成本键,然后除以循环的数量。无论如何,在我混乱的头脑中。如果我没有准备好代码的副本,我会设法回去的!!谢谢你的快速回复,不客气。您还可以创建一个新类“MilagereCord”(或其他任何类)作为您自己的NSObject子类,并创建一个由MilagereCords而不是NSDictionary填充的NSArray。。。取决于您希望操作这些条目的程度。如果它们有很多逻辑,那么一个类是有意义的。非常好,这确实非常有帮助。最后,我对我的原始问题使用了collection操作符。感谢您的帮助和及时回复。
NSNumber* avg = [myArray valueForKeyPath:@"@avg.cost"];