Có ai biết cách lấy NSCountedSet đối tượng và tạo một mảng các đối tượng đó theo thứ tự theo số đối tượng của chúng không? (Đếm cao nhất đến thấp nhất)Đơn đặt hàng NSCountedSet theo số
Trả lời
NSCountedSet *countedSet = [[NSCountedSet alloc] initWithArray:array2];
NSMutableArray *dictArray = [NSMutableArray array];
[countedSet enumerateObjectsUsingBlock:^(id obj, BOOL *stop) {
[dictArray addObject:@{@"object": obj,
@"count": @([countedSet countForObject:obj])}];
}];
NSLog(@"Objects sorted by count: %@", [dictArray sortedArrayUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"count" ascending:NO]]]);
Trong đoạn mã trên, array2
là một mảng của 100 chuỗi ngẫu nhiên, đều có hai chữ cái. sortedArrayUsingDescriptors:
, trả về một mảng đã sắp xếp, trong trường hợp này, nó được sắp xếp theo thứ tự giảm dần theo số lượng đối tượng.
Đây là một cách khác để đạt được kết quả tương tự:
NSArray *sortedValues = [countedSet.allObjects sortedArrayUsingComparator:^(id obj1, id obj2) {
NSUInteger n = [countedSet countForObject:obj1];
NSUInteger m = [countedSet countForObject:obj2];
return (n <= m)? (n < m)? NSOrderedAscending : NSOrderedSame : NSOrderedDescending;
}];
Để có được các giá trị để bạn có thể sử dụng giảm dần (hoặc ngược lại giá trị trả về ở trên).
sortedValues.reverseObjectEnumerator.allObjects
Đây là một phiên bản Swift:
let sorted = countedSet.allObjects.sort { return countedSet.countForObject($0.0) < countedSet.countForObject($0.1) }
Chỉ cần thay đổi <
->
cho đơn đặt hàng
giảm dần Ví Swift3 bạn cần phải sửa đổi mã nhanh chóng cung cấp một chút:
let countedSet = [1,2,2,4,6,7,8,8,5,8,1]
let sorted = countedSet.allObjects.sorted { return countedSet.count(for: $0.0) > countedSet.count(for: $0.1) }
// iterate over all items in the set
for item in countedSet {
print("\(item): Count - \(countedSet.count(for: item))")
}
Có gì với tham chiếu 'túi'? Bạn có thể làm rõ? – Adrian
Xin lỗi, tôi đã thử nghiệm mã với các tên biến khác và đổi tên thành biến sai ;-) Nó đã điều chỉnh mã. Cảm ơn bạn! – Lepidopteron
- 1. đặt hàng theo tham số
- 2. Chỉ số đơn đặt hàng chính
- 3. WooCommerce nhận tổng số đơn đặt hàng
- 4. Tạo đơn đặt hàng theo chương trình trong Magento
- 5. Truy vấn đơn đặt hàng chậm theo/phân biệt
- 6. Magento: Quản trị nhận email theo đơn đặt hàng mới
- 7. Đặt hàng theo số lượng trường Ngoại khóa?
- 8. Woocommerce - Nhận đơn đặt hàng giá và số lượng.
- 9. Cách tạo số đơn đặt hàng duy nhất?
- 10. TSQL: nhóm các đơn đặt hàng của khách hàng theo tuần
- 11. Tại sao Tổng số đơn hàng và tổng số đơn hàng OpenCart xuất hiện hai lần?
- 12. Rails 3 - Cách lấy số hàng từ một mô hình với một đơn đặt hàng bằng
- 13. Đặt hàng trong nhóm theo?
- 14. Swift NSCountedSet init với lỗi mảng?
- 15. Đơn đặt hàng xếp hàng sự kiện Silverlight Dispatcher
- 16. Thực hiện đơn đặt hàng tối ưu
- 17. Đơn đặt hàng MySQL CỦA IN()
- 18. "Dòng đơn đặt hàng" là gì?
- 19. Cách tốt nhất để tạo số đơn đặt hàng cho cửa hàng trực tuyến?
- 20. Đặt hàng MySQL theo Trợ giúp!
- 21. Đơn đặt hàng trùng lặp Magento
- 22. Giảm thiểu giá cho các đơn đặt hàng giảm giá theo khối lượng
- 23. Không hiển thị số/dấu đầu dòng cho đơn đặt hàng hoặc danh sách không theo thứ tự
- 24. Đặt hàng theo trường với SQLite
- 25. LINQ nhiều đơn đặt hàng DESCENDING
- 26. đơn đặt hàng này là 1?
- 27. Đơn đặt hàng được đồng bộ hóa
- 28. Đơn đặt hàng xử lý CSS
- 29. Cách kiểm tra phương thức thanh toán trên đơn đặt hàng WooCommerce theo id?
- 30. đơn đặt hàng mySQL theo các giá trị nhất định và sau đó là DESC?
Nếu bạn thay đổi 'return (n <= m)? (n
Filowk
Đây là một câu trả lời hay nhưng tôi thích sử dụng các trường hợp 'NSNumber' cho mỗi giá trị countForObject và sau đó chỉ trả lại kết quả' so sánh' cho những giá trị đó. –