您好我有兩個數組有一個有200 +對象(永遠不會更改),另一個是整數數組(作爲NSNumber對象)什麼是最簡單的方法來創建第三個數組將是來自數組1的所有對象的數組包含在數組2的索引數組中?Objective C可變數組從索引提取
0
A
回答
2
一種選擇方法將是索引的數組轉換爲NSIndexSet
然後用objectsAtIndexes:
NSArray *objects = @[@"A", @"B", @"C", @"D", @"E", @"F", @"G"];
NSArray *indexArray = @[@(0), @(2), @(6)];
NSMutableIndexSet *indexSet = [NSMutableIndexSet indexSet];
for (NSNumber *number in indexArray) {
[indexSet addIndex:[number unsignedIntegerValue]];
}
NSArray *filtered = [objects objectsAtIndexes:indexSet];
結果:A, C, G
當然,如果可以,最好是直接使用索引集,而不是n陣列。
或者你可以只使用一個簡單的循環。
NSMutableArray *filtered = [[NSMutableArray alloc]
initWithCapacity:indexArray.length];
for (NSNumber *number in indexArray) {
[filtered addObject:objects[[number unsignedIntegerValue]]];
}
+0
感謝這個答案就是我一直在尋找的。最後一個問題我的數組我回來(過濾)成爲一個不可變的數組與上面的代碼,我怎麼生成它作爲一個可變數組,以便我可以進一步過濾它,如果需要? – user1096447
+0
'NSMutableArray * filtered = [NSMutableArray arrayWithArray:[objects objectsAtIndexes:indexSet]];' – DrummerB
1
您可以創建集和使用上NSMutableSet
NSArray *array1 = @[ @1, @2, @3 ];
NSArray *array2 = @[ @2 ];
NSMutableSet *set = [NSMutableSet setWithArray:array1];
[set intersectSet:[NSSet setWithArray:array2]];
NSLog(@"%@", set.allObjects);
//=>(2)
相關問題
- 1. Objective-C的數組索引裹
- 2. Objective-C索引
- 3. Objective-C參數值的基於索引的提取
- 4. 從固定數組中提取隨機索引C++
- 5. 從index.html提取表objective-c
- 6. Objective-C UITableView索引
- 7. 從自定義索引數組中獲取數組索引
- 8. 提取索引數組中的int值?
- 9. C++ 11可變參數模板:默認索引數組值
- 10. C++數組索引
- 11. 向量化與可變數組索引
- 12. 深度可變的索引數組
- 13. 不可能的C++數組索引
- 14. Objective-C:從URL中提取文本
- 15. 使用邏輯索引從數組中提取向量
- 16. 的javascript:從複雜的ID字符串提取數組索引
- 17. 使用索引從Perl中的數組中提取子串
- 18. 如何提取從LLVM的getelementptr指令數組索引值
- 19. 從3D矩陣和matlab索引數組中提取2D矩陣
- 20. R:使用索引矩陣從數組中提取矩陣
- 21. 從多維數組中提取特徵索引
- 22. Objective-C /可可丟失數組值
- 23. 從Objective-c一側提取C#發送的Zip文件的字節數組
- 24. 如何索引objective-C中的索引號如何從數組中檢索對象名稱?
- 25. 的Objective-C:寫的.plist中值數組的特定索引
- 26. 如何確定Objective C中的數組索引?
- 27. Objective C - 來自數組的對象索引
- 28. Objective-C:在索引數組中的對象
- 29. 提取索引
- 30. 從數組中取出的索引
如果您可以使用'NSIndexSet'而不是第二個數組。然後它只是一個'[array1 objectsAtIndexes:indexSet]' –
我看到兩種不同的解決方案,都投了!你能舉例說明你真正想要什麼嗎? –