Cho một mảng, làm thế nào tôi có thể tìm thấy tất cả các chỉ số của các phần tử khớp với một điều kiện nhất định?Tìm chỉ mục của các phần tử khớp với một điều kiện nhất định
Ví dụ, nếu tôi có:
arr = ['x', 'o', 'x', '.', '.', 'o', 'x']
Để tìm tất cả các chỉ số nơi mục là x
, tôi có thể làm:
arr.each_with_index.map { |a, i| a == 'x' ? i : nil }.compact # => [0, 2, 6]
hoặc
(0..arr.size-1).select { |i| arr[i] == 'x' } # => [0, 2, 6]
Có cách tốt hơn để đạt được điều này?
Bạn đang tìm kiếm cho logic hoặc cú pháp, có thể giúp bạn với logic nhưng không phải là cú pháp mặc dù :) không quen thuộc với ruby nhiều ... Bạn có thể sử dụng một 'regexp' – bonCodigo
Tôi đoán cả logic và cú pháp :) Không chắc chắn về regex vì các mục không phải là chuỗi cần thiết. –
Đây là một trong số ít các trường hợp tôi nghĩ rằng sự hiểu biết danh sách của Python thực sự đọc tốt hơn: '[i cho i, một liệt kê (arr) nếu a == 'x']'. –