2015-11-03 10 views
19

tôi có một mảng đơn giản như:Làm thế nào để trao đổi các phần tử trong mảng nhanh?

var cellOrder = [1,2,3,4] 

Tôi muốn trao đổi các yếu tố như giả sử một yếu tố thứ hai với phần tử đầu tiên.

Và kết quả sẽ là:

[2,1,3,4] 

tôi biết chúng tôi có thể sử dụng exchangeObjectAtIndex với NSMutableArray Nhưng tôi muốn sử dụng mảng nhanh chóng. Bất kỳ cách nào để làm tương tự với nhanh chóng [Int] mảng?

+4

Bạn nên biết về 'swap()' vì * bạn * đã đăng câu hỏi về: [lỗi nghiêm trọng: hoán đổi vị trí với chính nó không được hỗ trợ với Swift 2.0] (http://stackoverflow.com/questions/ 32689753/fatal-error-swapping-a-location-với-chính nó-là-không-được hỗ trợ-với-swift-2-0) –

Trả lời

38

Sử dụng swap:

var cellOrder = [1,2,3,4] 
swap(&cellOrder[0], &cellOrder[1]) 

Cách khác, bạn chỉ có thể gán nó như một tuple:

(cellOrder[0], cellOrder[1]) = (cellOrder[1], cellOrder[0]) 
+0

Rất thanh lịch và đơn giản –

+0

Trong nhanh chóng 4 nó bây giờ 'swapAt' – Rishab

+0

' swapAt' là một chức năng khác nhau lấy chỉ mục thay vì giá trị 'inout'. Nó cũng có thể được sử dụng để giải quyết vấn đề này, nhưng không phải là sự thay thế cho 'swap' (vẫn còn tồn tại trong Swift 4). –

7

Một lựa chọn là:

cellOrder[0...1] = [cellOrder[1], cellOrder[0]] 
13

nhanh chóng 4:

cellOrder.swapAt(index0, index1)

+1

Điều này không cung cấp câu trả lời cho câu hỏi. Để phê bình hoặc yêu cầu làm rõ từ tác giả, hãy để lại nhận xét bên dưới bài đăng của họ. - [Từ đánh giá] (/ review/low-quality-posts/16686681) – basvk

+1

@basvk Tôi nghĩ rằng nó trả lời câu hỏi - nó cho thấy làm thế nào để "trao đổi hai yếu tố" từ mảng. Và đó là câu trả lời hợp lệ cho câu hỏi (cũng chính xác). – Zizouz212

+1

@basvk Cảm ơn lời khuyên của bạn.Để trả lời câu hỏi này, 'cellOrder.swapAt (0, 1)' nên hiểu rõ hơn. Và cũng nhờ @ Zizouz212. – hstdt

Các vấn đề liên quan