Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

วิธีการใช้ Ruby's Array Class (ตัวอย่าง + วิธีที่เป็นประโยชน์)

อาร์เรย์คืออะไร

อาร์เรย์เป็นคลาส 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" จะเป็นเช่นนี้:

วิธีการใช้ Ruby s Array Class (ตัวอย่าง + วิธีที่เป็นประโยชน์)

นี่คือตัวอย่างโค้ดที่แสดงข้อมูลในภาพ:

["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 ซึ่งเป็นคลาสสำคัญอีกประเภทหนึ่งที่สามารถใช้ร่วมกับอาร์เรย์เพื่อเขียนโค้ดที่น่าสนใจยิ่งขึ้น

การฝึกฝนทำให้สมบูรณ์แบบ!

หากคุณพบว่ามีประโยชน์ โปรดแชร์โพสต์นี้และสมัครรับจดหมายข่าวด้านล่าง 🙂