美文网首页
iOS数组字典排序(键值排序)

iOS数组字典排序(键值排序)

作者: YimG | 来源:发表于2019-06-25 11:30 被阅读0次

    iOS高级程序师技术群:622177838,期待你的加入

    由于float类型排序,会因为整数部分位数不同的原因,造成排序问题,比如:

    NSArray * arr = @[@[@"startAmout":@"10.00"],@[@"startAmout":@"11.53"],@[@"startAmout":@"15.37"],@[@"startAmout":@"15.37"],@[@"startAmout":@"5.56"],@[@"startAmout":@"17.30"]];

    NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@"startAmout"ascending:YES];

    NSMutableArray * nowArr = [NSMutableArray new];

    nowArr= [arr sortedArrayUsingDescriptors:@[descriptor]];

    这样排序的结果是这样的:

    @[@[@"startAmout":@"10.00"],@[@"startAmout":@"11.53"],@[@"startAmout":@"15.37"],@[@"startAmout":@"15.37"],@[@"startAmout":@"17.30"],@[@"startAmout":@"5.56"]];

    大家会发现前半部分都是正常的升序排列,但是唯独最后的5.56个别,大家可以尝试排序打印。

    解决办法:

    在字典中插入新的参数,比如:

    @[@[@"startAmout":@"10.00",@"num":@"1000"],@[@"startAmout":@"11.53",@"num":@"1153"],@[@"startAmout":@"15.37",@"num":@"1537"],@[@"startAmout":@"15.37",@"num":@"1537"],@[@"startAmout":@"5.56",@"num":@"556"],@[@"startAmout":@"17.30",@"num":@"1730"]];

    这样排序的结果就是正确的,核心部分的思想就是插入一个新的整形参数来排序整体数组键值,num = startAmout * 100。

    如果大家还有更好排列float类型的建议,欢迎留言!!!

    相关文章

      网友评论

          本文标题:iOS数组字典排序(键值排序)

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