Objective c NSArray的平均值和新NSArray中的存储值

Objective c NSArray的平均值和新NSArray中的存储值,objective-c,nsmutablearray,nsarray,average,Objective C,Nsmutablearray,Nsarray,Average,我希望得到NSArray元素的平均值,并按以下方式将它们存储在新数组中 NSArray* number; NSMutableArray* Average; [Average objectAtIndex:0]=[number objectAtIndex:0]; [Average objectAtIndex:1]=([number objectAtIndex:0] + [number objectAtIndex:1])/2; [Average objectAtIndex:2]=([number o

我希望得到NSArray元素的平均值,并按以下方式将它们存储在新数组中

NSArray* number;
NSMutableArray* Average;

[Average objectAtIndex:0]=[number objectAtIndex:0];
[Average objectAtIndex:1]=([number objectAtIndex:0] + [number objectAtIndex:1])/2;
[Average objectAtIndex:2]=([number objectAtIndex:0] + [number objectAtIndex:1] + [number objectAtIndex:2])/3;
我想用2个for循环来做

for (int i =0; i<[number count]; i++){
  for (int j=0; j<i; j++){
    temp+=[number objectAtIndex:j];
  }

[Average addObject: temp/(i+1)];

}

对于(int i=0;i您只需要一个循环:

NSArray *numbers = @[@(2.4), @(2.7), @(4.0)];
NSMutableArray *averages = [NSMutableArray array];
double total = 0.0;

for (int i = 0; i < [numbers count]; i++) {
    total += [[numbers objectAtIndex:i] doubleValue];
    [averages addObject:@(total / (i + 1))];
}
顺便说一句,与您的问题无关,但是如果您只是想平均
numbers
数组中的所有数字,您可以使用:


显然,只有当您想平均数组中的所有数字时,这才有用,但在这些情况下,这是一种方便的速记方法。

您只需要一个循环:

NSArray *numbers = @[@(2.4), @(2.7), @(4.0)];
NSMutableArray *averages = [NSMutableArray array];
double total = 0.0;

for (int i = 0; i < [numbers count]; i++) {
    total += [[numbers objectAtIndex:i] doubleValue];
    [averages addObject:@(total / (i + 1))];
}
顺便说一句,与您的问题无关,但是如果您只是想平均
numbers
数组中的所有数字,您可以使用:


显然,只有当您想平均数组中的所有数字时,这才有用,但在这些情况下,这是一种方便的速记方法。

KVO无疑是最简洁的方法;)KVO无疑是最简洁的方法;)
NSNumber *average = [numbers valueForKeyPath:@"@avg.self"];