อาร์เรย์คืออะไร
อาร์เรย์เป็นคลาส Ruby ในตัว ซึ่งมีรายการตั้งแต่ 0 รายการขึ้นไป และรวมถึงวิธีการที่ช่วยให้คุณเพิ่ม เข้าถึง และวนซ้ำรายการเหล่านี้ได้อย่างง่ายดาย
สิ่งนี้มีประโยชน์ เพราะหากไม่มีอาร์เรย์ คุณจะต้องใช้ตัวแปรหลายตัว
ตัวอย่าง :
a = 1 b = 2 c = 3
แต่คุณสามารถทำได้ :
numbers = [1, 2, 3]
ส่วนที่ดีที่สุด?
คุณสามารถใส่อะไรก็ได้ในอาร์เรย์!
ถูกใจ :
- ตัวเลข
- สตริง
- อาร์เรย์เพิ่มเติม! (ซึ่งจะทำให้เป็นอาร์เรย์หลายมิติ)
มาเรียนรู้เพิ่มเติมเกี่ยวกับอาร์เรย์เพื่อให้คุณใช้งานได้ดีที่สุด!
สารบัญ
- 1 Arrays เป็น Zero-Indexed
- วิธี Ruby Array 2 วิธี
- 3 วิธีการแปลงอาร์เรย์เป็นสตริง
- 4 อาร์เรย์หลายมิติ (2D Arrays และอื่นๆ)
- 5 วิธีทำซ้ำผ่านอาร์เรย์ Ruby
- 6 ดัชนีเชิงลบ
- 7 เพิ่มเติม Array Operations
- 8 การดำเนินการกับหลายอาร์เรย์
- 9 บทสรุป
- 9.1 ที่เกี่ยวข้อง
อาร์เรย์มีการจัดทำดัชนีเป็นศูนย์
คุณสามารถเข้าถึงองค์ประกอบ ภายในอาร์เรย์โดยใช้ ดัชนี ซึ่งเริ่มต้นที่ 0.
หากคุณมีอาร์เรย์ที่มีคำว่า "cat", "dog" และ "tiger" จะเป็นเช่นนี้:
นี่คือตัวอย่างโค้ดที่แสดงข้อมูลในภาพ:
["cat", "dog", "tiger"]
ตอนนี้ :
คุณจะค้นพบสิ่งที่คุณสามารถทำได้ด้วยอาร์เรย์!
วิธี Ruby Array
เริ่มต้นด้วยการเรียนรู้วิธีสร้างอาร์เรย์
คุณสามารถสร้างอาร์เรย์ว่าง จากนั้นเพิ่มรายการใหม่เข้าไป หรือสร้างอาร์เรย์ด้วยค่าเริ่มต้น
เริ่มต้นอาร์เรย์ว่าง :
users = []
เริ่มต้นอาร์เรย์ด้วยข้อมูล :
users = ["john", "david", "peter"]
หากคุณกำลังสร้างอาร์เรย์สตริงเท่านั้น…
คุณสามารถหลีกเลี่ยงไม่ต้องพิมพ์เครื่องหมายคำพูดสำหรับทุกสตริงโดยสร้างอาร์เรย์ด้วย %w
.
ตัวอย่าง :
users = %w(john david peter)
ตอนนี้เรามีอาร์เรย์ที่คุณสามารถเข้าถึงองค์ประกอบที่มีอยู่ได้
ตามนี้ :
users[0] # First element of the array users[1] # Second element of the array users[2] # Third element of the array
คุณสามารถใช้วิธีแรกและวิธีสุดท้าย:
users.first # First element of the array users.last # Last element of the array
วิธีเพิ่มรายการในอาร์เรย์ของคุณมีดังต่อไปนี้:
# Both of these have the same effect, << is preferred. users.push "andrew" users << "andrew"
นี่คือวิธีลบองค์ประกอบออกจากอาร์เรย์ของคุณ:
last_user = users.pop # Removes the last element from the array and returns it user.delete_at(0) # Removes the first element of the array
นอกจากนี้ยังมีวิธี shift &unshift ซึ่งคล้ายกับ pop/push แต่รับหรือเพิ่มองค์ประกอบที่ด้านหน้าอาร์เรย์
users.unshift "robert" # Adds an element in front of the array users.shift # Removes the first element of the array and returns it
อาร์เรย์นี้มีหรือรวมบางรายการหรือไม่
ตรวจสอบว่ามีค่าอยู่ในอาร์เรย์ใน Ruby หรือไม่:
numbers = [1,2,3] numbers.include?(2) # true numbers.include?(10) # false
ความยาวของอาร์เรย์คือเท่าไร (กล่าวอีกนัยหนึ่งว่ามีกี่องค์ประกอบ)
words = ["cat", "coconut", "bacon"] words.size # 3
นี่คือเคล็ดลับเล็กๆ สำหรับคุณ :
การทำงาน | วิธีการ |
---|---|
เริ่มต้น | Array.new, [], %w |
อ่าน | [0] ครั้งแรก ครั้งสุดท้าย |
เพิ่ม | ดัน <<ไม่เปลี่ยน |
ลบ | ป๊อป, delete_at, shift |
วิธีการแปลงอาร์เรย์เป็นสตริง
คุณสามารถแปลงอาร์เรย์เป็นสตริงโดยใช้ Array#join
วิธีการ
นี่คือตัวอย่าง :
letters = %w(a b c d) letters.join # "abcd"
โปรดสังเกตว่าวิธีนี้ใช้พารามิเตอร์ทางเลือก 1 ตัว ดังนั้นคุณจึงสามารถกำหนดตัวคั่นระหว่างองค์ประกอบอาร์เรย์เมื่อรวมเข้าด้วยกันได้
letters = %w(a b c d) letters.join(" ") # "a b c d"
หากคุณต้องการการดำเนินการย้อนกลับ จากสตริงหนึ่งไปอีกอาร์เรย์ คุณต้องใช้ split
วิธีการ:
"a b c".split
ซึ่งส่งผลให้:
["a", "b", "c"]
อาร์เรย์หลายมิติ (อาร์เรย์ 2 มิติและอื่น ๆ )
อาร์เรย์สามารถประกอบขึ้นจากอาร์เรย์อื่นๆ ได้ เราเรียกว่าอาร์เรย์หลายมิติ
ตัวอย่างอาร์เรย์ 2 มิติ :
users = [ [1, 'Peter'], [2, 'Steven'] ]
ในการเข้าถึงองค์ประกอบแรกจากอาร์เรย์ย่อยแรก คุณสามารถใช้ไวยากรณ์นี้:
users[0][0] # 1
และสำหรับองค์ประกอบที่สองของอาร์เรย์ย่อยแรก:
users[0][1] # 'Peter'
มีบางกรณีที่คุณต้องการแปลงอาร์เรย์หลายมิติเป็นอาร์เรย์ปกติ
คุณสามารถทำได้โดยใช้วิธีการแผ่:
users.flatten # [1, "Peter", 2, "Steven"]
วิธีการวนซ้ำอาร์เรย์ Ruby
ตอนนี้คุณมีอาร์เรย์แล้ว คงจะดีไม่น้อยถ้าคุณสามารถระบุเนื้อหาและพิมพ์ออกมาได้
ข่าวดีก็คือคุณทำได้!
ตัวอย่าง :พิมพ์อาร์เรย์ของคุณโดยใช้แต่ละ
users.each { |item| puts item }
หากคุณต้องการทำงานกับทั้งค่าและดัชนี คุณสามารถใช้อาร์เรย์แต่ละรายการด้วยวิธีดัชนี:
users.each_with_index { |item, idx| puts "#{item} with index #{idx}" }
หมายเหตุ :การดำเนินการวนซ้ำเหล่านี้ส่วนใหญ่พร้อมใช้งานด้วยโมดูล Enumerable ซึ่งรวมอยู่ในคลาส Array โดยค่าเริ่มต้น
ตัวอย่าง :ใช้ตัวพิมพ์ใหญ่ทุกคำใน Array ของคุณโดยใช้แผนที่
users = users.map { |user| user.capitalize } users = users.map(&:capitalize)
map
เมธอดไม่ได้แก้ไขอาร์เรย์แบบแทนที่ แต่จะคืนค่าอาร์เรย์ใหม่ที่มีองค์ประกอบที่แก้ไข ดังนั้นเราจำเป็นต้องกำหนดผลลัพธ์กลับไปยังตัวแปร
มี แผนที่! (สังเกตเครื่องหมายอัศเจรีย์) วิธีที่จะแก้ไขอาร์เรย์โดยตรง แต่โดยทั่วไปควรใช้เวอร์ชันที่ง่ายกว่า
อีกอย่างที่คุณอาจต้องการทำคือค้นหารายการทั้งหมดในอาร์เรย์ของคุณที่ตรงกับเกณฑ์ที่กำหนด
ตัวอย่าง :ค้นหาตัวเลขทั้งหมดที่มากกว่า 10:
numbers = [3, 7, 12, 2, 49] numbers.select { |n| n > 10 } # => 12, 49
การจัดทำดัชนีเชิงลบ
คุณได้เรียนรู้ว่าหากคุณต้องการเข้าถึงองค์ประกอบบางอย่างจากอาร์เรย์ Ruby คุณต้องใช้การจัดทำดัชนี (หรือวิธีการเช่น first
&last
)
แล้วการจัดทำดัชนีเชิงลบล่ะ
ฉันกำลังพูดถึงการใช้บางอย่างเช่น -1
เป็นดัชนีอาร์เรย์ของคุณ
สิ่งที่ Ruby จะทำคือเริ่มจากส่วนท้ายของอาร์เรย์ ดังนั้น -1
จะได้ไอเทมสุดท้าย -2
จะทำให้คุณเป็นอันดับสองรองจาก ฯลฯ
ตัวอย่าง :
letters = ["a", "b", "c"] letters[-1] # "c" letters[-2] # "b"
การทำงานของอาร์เรย์เพิ่มเติม
มีหลายสิ่งที่คุณทำได้โดยใช้อาร์เรย์ เช่น การจัดเรียงหรือเลือกองค์ประกอบแบบสุ่ม
คุณสามารถใช้วิธีการเรียงลำดับเพื่อจัดเรียงอาร์เรย์ ซึ่งจะทำงานได้ดีหากคุณมีเพียงแค่สตริงหรือตัวเลขในอาร์เรย์ของคุณ สำหรับการจัดเรียงขั้นสูง โปรดดู sort_by
numbers = numbers.sort
คุณยังสามารถลบองค์ประกอบที่ซ้ำกันออกจากอาร์เรย์ได้ หากคุณพบว่าตัวเองทำสิ่งนี้บ่อย คุณอาจต้องการพิจารณาใช้ชุดแทน
numbers = [1, 3, 3, 5, 5] numbers = numbers.uniq # => [1, 3, 5]
โปรดทราบว่าการดำเนินการนี้จะไม่เปลี่ยนอาร์เรย์ของคุณอย่างถาวร วิธีการ Ruby ส่วนใหญ่จะสร้างอาร์เรย์ใหม่โดยมีการเปลี่ยนแปลงที่คุณร้องขอ ดังนั้น หากคุณต้องการบันทึกผลลัพธ์ คุณต้องใช้ตัวแปรหรือในตัวอย่างนี้ ให้ใช้ uniq!
วิธีการ
หากคุณต้องการเลือกองค์ประกอบสุ่มหนึ่งรายการจากอาร์เรย์ของคุณ คุณสามารถใช้ sample
วิธีการ:
numbers.sample
คุณยังอาจต้องการ "แบ่ง" อาร์เรย์ของคุณ โดยเอาส่วนหนึ่งของอาร์เรย์มาแทนที่ทั้งหมด
ตัวอย่าง :นำ 3 องค์ประกอบแรกจากอาร์เรย์ โดยไม่เปลี่ยนแปลง:
numbers.take(3) numbers[0,3]
คุณสามารถทำการสไลซ์อาร์เรย์ Ruby ขั้นสูงได้ ตัวอย่างเช่น คุณอาจต้องการรับองค์ประกอบทั้งหมดยกเว้นองค์ประกอบแรก:
numbers[1..-1]
สังเกตความแตกต่างระหว่างการใช้เครื่องหมายจุลภาค (0,3
) &ช่วง (1..-1
). อันแรกระบุว่า "รับ 3 องค์ประกอบโดยเริ่มต้นที่ดัชนี 0" ในขณะที่อันสุดท้ายระบุว่า "รับอักขระในช่วงนี้"
รับขนาดของอาร์เรย์:
numbers.size # 5
ตรวจสอบว่าอาร์เรย์ว่างเปล่า:
numbers.empty? # false
ลบ nil
ค่า:
numbers << nil # [1, 3, 3, 5, 5, nil] numbers.compact # [1, 3, 3, 5, 5]
การดำเนินการที่มีหลายอาร์เรย์
หากคุณมีสองอาร์เรย์และต้องการรวมหรือรวมเป็นอาร์เรย์เดียว คุณสามารถทำได้ดังนี้:
# Faster, because this changes the users array users.concat(new_users) # Slower, because this creates a new array users += new_users
คุณยังสามารถลบองค์ประกอบออกจากอาร์เรย์หนึ่งแบบนี้ โดยที่ users_to_delete
ยังเป็นอาร์เรย์:
users = users - users_to_delete
สุดท้าย คุณสามารถรับองค์ประกอบที่ปรากฏในสองอาร์เรย์พร้อมกัน:
users & new_users
บทสรุป
อาร์เรย์ Ruby มีประโยชน์มากและจะเป็นพันธมิตรที่ทรงพลังเคียงข้างคุณ
อย่าลืมฝึกสร้างอาร์เรย์ เพิ่มองค์ประกอบ เข้าถึงองค์ประกอบด้วยดัชนี ฯลฯ อ่านเกี่ยวกับ Ruby hash ซึ่งเป็นคลาสสำคัญอีกประเภทหนึ่งที่สามารถใช้ร่วมกับอาร์เรย์เพื่อเขียนโค้ดที่น่าสนใจยิ่งขึ้น
การฝึกฝนทำให้สมบูรณ์แบบ!
หากคุณพบว่ามีประโยชน์ โปรดแชร์โพสต์นี้และสมัครรับจดหมายข่าวด้านล่าง 🙂