美文网首页
计算数字数组中元素的最值 & KVC用法延伸

计算数字数组中元素的最值 & KVC用法延伸

作者: chernyog | 来源:发表于2016-08-10 15:55 被阅读76次

计算数字数组中元素的最值 & KVC用法延伸

原贴地址:http://stackoverflow.com/questions/15931112/finding-the-smallest-and-biggest-value-in-nsarray-of-nsnumbers

方法一:排序

NSArray *sorted1 = [numbers sortedArrayUsingSelector:@selector(compare:)];

方法二:KVC - doubleValue

NSNumber *max=[numbers valueForKeyPath:@"@max.doubleValue"];
NSNumber *min=[numbers valueForKeyPath:@"@min.doubleValue"];

方法三:KVC - self

NSNumber *max=[numbers valueForKeyPath:@"@max.self"];
NSNumber *min=[numbers valueForKeyPath:@"@min.self"];

方法四:循环

float xmax = -MAXFLOAT;
float xmin = MAXFLOAT;
for (NSNumber *num in numbers) {
    float x = num.floatValue;
    if (x < xmin) xmin = x;
    if (x > xmax) xmax = x;
}

方法五:block遍历

__block float xmax = -MAXFLOAT;
__block float xmin = MAXFLOAT;
[numbers enumerateObjectsUsingBlock:^(NSNumber *num, NSUInteger idx, BOOL *stop) {
    float x = num.floatValue;
    if (x < xmin) xmin = x;
    if (x > xmax) xmax = x;
}];

※ 各种方法性能测试

  • <a href="https://code.csdn.net/snippets/1821017#snippets1821017"> demo.m</a>

KVC使用补充

求和

NSNumber *sum = [numbers valueForKeyPath:@"@sum.floatValue"];

求平均值

NSNumber *sum = [numbers valueForKeyPath:@"@avg.floatValue"];

删除重复数据

NSArray *newArray = [numbers valueForKeyPath:@"@distinctUnionOfObjects.self"]; 

调用实例方法

NSArray *array = @[@"id", @"sex", @"age", @"homeTown"];
// 字符串变大写
NSArray *list1 = [array valueForKeyPath:@"uppercaseString"];
// 字符串变小写
NSArray *list2 = [array valueForKeyPath:@"lowercaseString"];
// 字符串首字母变大写,其它变小写
NSArray *list3 = [array valueForKeyPath:@"capitalizedString"];
……
// 其它实例方法以此类推,皆可调用!

相关文章

  • 计算数字数组中元素的最值 & KVC用法延伸

    计算数字数组中元素的最值 & KVC用法延伸 原贴地址:http://stackoverflow.com/ques...

  • 数组

    简介 数组:值的有序集合。 元素:数组的每个值。数组元素可以是任意类型 索引:每个元素在数组中的位置,以数字表示。...

  • reduce的用法

    最直接的用法 将数组通过叠加变成一项 计算对象每个值的总数 判断字符串中每个数字出现的次数 替代map(filte...

  • JavaScript 精粹 基础 进阶(5)数组

    数组是值的有序集合。每个值叫做元素,每个元素在数组中都有数字位置编号,也就是索引。JS中的数组是弱类型的,数组中可...

  • JavaScript 数组

    数组的创建 数组是值的有序集合。每个值叫做元素,每个元素在数组中都有数字位置编号,也就是索引。JS中的数组是弱类型...

  • map()方法

    定义和用法 map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。map() 方法按照原始...

  • js 中的map()函数

    定义和用法 map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。 map() 方法按照原...

  • 常见数组处理

    找出数组中的最大值 计算数组元素的平均值 复制数组 颠倒数组顺序

  • 使用数组存储大数(阶乘值)

    编程计算并输出1~40之间的所有数的阶乘值。用一个包含50个元素的数组存储一个大数,每个数组元素存储大数中的一位数字

  • 用KVC获取数组最值/平均值/获取批量返回值等

    转自:用KVC获取数组最值/平均值/获取批量返回值等

网友评论

      本文标题:计算数字数组中元素的最值 & KVC用法延伸

      本文链接:https://www.haomeiwen.com/subject/zsrjsttx.html