2012-08-29 30 views
16

Tôi có hai mảng. Mảng 1 chứa 15 đối tượng và mảng 2 chứa 4 đối tượng. Có 2 đối tượng chung từ cả hai mảng, tôi chỉ muốn lấy mảng kết quả của 2 đối tượng đó.cách cắt hai mảng trong mục tiêu C?

Nó phải giống như giao điểm của hai Set, nhưng làm thế nào để làm trong Objective C cho mảng ..? Hãy giúp tôi. cảm ơn.

+4

gì về việc tạo ra 2 bộ với mảng của bạn và sau đó gọi các ngã tư trên bộ? –

+1

xem http://stackoverflow.com/a/1475656/1030951 – HarshIT

+0

Cảm ơn @Hadley và Ricard, tôi đã nhận được giải pháp lọc kết quả của mình bằng cách sử dụng NSSet. Có mảng kết quả của tôi .. !! – Dishant

Trả lời

47

Sử dụng NSMutableSet

NSMutableSet *set1 = [NSMutableSet setWithArray: array1]; 
NSSet *set2 = [NSSet setWithArray: array2]; 
[set1 intersectSet: set2]; 
NSArray *resultArray = [set1 allObjects]; 
+1

Ở đây set1 phải là NSMutableSet vì NSMutableSet có phương thức mở rộng intersectSet –

+2

hoạt động tốt như thế nào nếu các mảng này là khá lớn, giống như 2000 đối tượng mỗi? Đây có phải là giải pháp có thể mở rộng không? – zumzum

+0

Điều đáng nói là tại sao người ta sử dụng NSSet vì lý do hiệu quả! Mã sử ​​dụng NSSets sẽ thực hiện nhanh hơn (hiệu quả thời gian chạy tốt hơn) so với các vòng lặp tương đương. – occulus