我有3个NSArrays:
项目:金额
A: 1
B: 2
C: 3
A: 2
E: 1
F: 6
C: 5
D: 1
F: 3
将这些“组合”成一个之后,我需要:
A: 3
B: 2
C: 8
D: 1
E: 1
F: 9
我首先将所有数组合并为一个,然后求和并删除重复项吗?
答案 0 :(得分:3)
您可以使用NSCountedSet
。我不清楚数组中数据的结构,但是假设你的B: 2
意味着数组中有两个B,那么这样的东西就可以了:
NSCountedSet *set = [NSCountedSet setWithCapacity:[array1 count]+[array2 count]+[array3 count]];
[set addObjectsFromArray:array1];
[set addObjectsFromArray:array2];
[set addObjectsFromArray:array3];
// Test it out!
NSUInteger countForC = [set countForObject:objC];
// countForC == 8
答案 1 :(得分:1)
您可以尝试使用NSMutableDictionary,而不是使用NSArray,其中键是对象结构中固有的。这将允许您遍历每个字母和计数数组,然后使用键查询值,获取值并添加到值,然后继续处理。
答案 2 :(得分:0)
一种可能性是使用:
可能需要考虑性能因素。或者,迭代数组,在单独的NSDictionary中提取匹配的项目(键入项目)并随时求和。