Tôi có hai mảngHãy so sánh hai mảng và Hủy bỏ các giá trị độc đáo
ordered = [1, 2, 3, 4, 5]
some_list = [2, 6, 4]
Tôi muốn so sánh hai mảng, sau đó tìm các bản sao, và tạo nó thành một mảng mới. Bí quyết là giữ cho mảng theo thứ tự được cung cấp trong mảng ordered
.
new_array = [2, 4] # Result should be this
Tôi đã nghĩ ra một cách để làm điều đó, tuy nhiên tôi nghĩ hiệu suất có thể được cải thiện.
ordered.each do |value1|
some_list.include? value1
new_array << value1
end
end
Có cách nào để tôi có thể cải thiện điều này không?
Benchmark quả
user system total real
using & 0.210000 0.000000 0.210000 ( 0.212070)
using select 0.220000 0.000000 0.220000 ( 0.218889)
Đó là độc đáo cú pháp ngắn gọn, nhưng nó kéo lên vào mã tối ưu so với vòng lặp của mình, hoặc nó sẽ kết thúc được tốc độ tương đương nhưng vẫn đẹp hơn để gõ? –
Tôi đang chạy điểm chuẩn để so sánh cả hai như tôi nói ... – jason328
câu trả lời này sẽ không duy trì trật tự. Tôi cập nhật nó thành 'new_arry = order & some_list' để nó giữ lệnh được định nghĩa trong mảng' ordered'? thứ tự của các phần tử trong mảng mới phụ thuộc vào mảng đầu tiên. –