Giả sử tôi có mảng [1,2,3,1,2,3]
và tôi muốn xóa phiên bản đầu tiên của (nói) 2
từ mảng cho số [1,3,1,2,3]
. Cách dễ nhất là gì?Xóa phần tử kết hợp đầu tiên khỏi mảng
28
A
Trả lời
61
li.delete_at(li.index(n) || li.length)
li[li.length]
là ra khỏi phạm vi, vì vậy || li.length
xử lý các trường hợp n
không có trong danh sách.
irb(main):001:0> li = [1,2,3,1,2,3]
=> [1, 2, 3, 1, 2, 3]
irb(main):002:0> li.delete_at(li.index(2) || li.length)
=> 2
irb(main):003:0> li.delete_at(li.index(42) || li.length)
=> nil
irb(main):004:0> li
=> [1, 3, 1, 2, 3]
12
Nếu || li.length
là để tránh việc gửi nil
để li.delete_at
(mà sẽ cho kết quả trong một TypeError), sau đó một phiên bản dễ đọc hơn có thể trông như thế này
li.delete_at li.index(42) unless li.index(42).nil?
+6
Bạn có thể muốn lưu trữ 'li.index (42)' trong một biến, để tránh thực hiện tìm kiếm hai lần. Hiệu suất sẽ tốt hơn cho các mảng lớn. – Kelvin
4
Có lẽ nó nên trở thành một phần của stdlib :
class Array
def delete_first item
delete_at(index(item) || length)
end
end
Các vấn đề liên quan
- 1. xoá phần tử đầu tiên khỏi mảng
- 2. Chỉ xóa phần tử đầu tiên khỏi lựa chọn jquery
- 3. Xóa phần tử đầu tiên khỏi $ @ trong bash
- 4. Đưa phần tử đầu tiên ra khỏi mảng
- 5. Xóa các phần tử khỏi mảng Ruby
- 6. Xóa phần tử null khỏi mảng mongo
- 7. Xóa khóa khỏi mảng kết hợp
- 8. Xóa phần tử khỏi mảng, sử dụng slice
- 9. Xóa 16 byte đầu tiên khỏi mảng byte
- 10. PHP | Xóa phần tử khỏi mảng với sắp xếp lại?
- 11. Xóa các phần tử khỏi mảng trong C
- 12. Xóa phần tử khỏi mảng đa chiều dựa trên khóa
- 13. cách pythonic để xóa các phần tử khỏi mảng numpy
- 14. Xóa các phần tử trùng lặp khỏi mảng trong Ruby
- 15. Xóa phần tử _id khỏi các kết quả Pymongo
- 16. xoá phần tử khỏi mảng MATLAB
- 17. Làm cách nào để xóa các khoảng trắng đầu và cuối khỏi các phần tử mảng?
- 18. Nhận tất cả các phần tử, nhưng phần tử đầu tiên từ một mảng
- 19. PHP: Di chuyển phần tử kết hợp thành phần bắt đầu của mảng
- 20. cách xóa mọi kiểu khỏi phần tử?
- 21. Xóa không gian bắt đầu và kết thúc khỏi các phần tử XML
- 22. Xóa phần tử khỏi phần giữa của tiêu chuẩn :: heap
- 23. Cách xóa phần tử khỏi IGrouping
- 24. Xóa các phần tử khỏi một vector
- 25. Xóa phần tử khỏi danh sách chung
- 26. Cách xóa phần tử xml khỏi tệp?
- 27. Python: xóa phần tử khỏi heap
- 28. Xóa các dòng X đầu tiên khỏi một tệp PHP
- 29. Xóa khỏi mảng và trả về các phần tử đã xóa trong Ruby
- 30. Xóa 16 byte đầu tiên?
Cảm ơn bạn. Tôi đã đánh đầu mình cố gắng thể hiện điều này một cách tao nhã. –
Tôi không hiểu '|| li.length' bất cứ ai có thể giải thích – gates
Bất kỳ giá trị nào trong ruby đều có thể được coi là giá trị boolean, chỉ với 'false' và' nil' đánh giá sai. Cú pháp ống đôi là một cách viết tắt thuận tiện. 'a || b' có nghĩa là "a, trừ khi nó là nil, rồi b". – erich2k8